MyBatis 中的级联
MyBatis 的级联分为 3 种。
1、鉴别器(discriminator):它是根据某些条件决定采用具体实现类级联的方案,比如体检表要根据性别去区分。
2、一对一(association):比如学生证和学生就是一对一的级联,雇员和工牌也是一种一对一的级联。
3、一对多(collection):比如班主任和学生就是一种一对多的级联。
Mybatis没有多对多的级联,因为多对多级联比较复杂,使用困难,而且可以通过两个一对多级联进行替代。
一对一
<resultMap id="EmployeeTaskMap" type="com.EmployeeTask">
<id column="id" property="id"/>
<result column="emp_id" property="empId"/>
<association property="task" column="task_id" select="com.mapper.TaskMapper.getTask"/>
</resultMap>
这样就完成了两张表的映射。雇员任务通过任务编号(task_id)和任务表示关联,这是一个一对一的级联关系,使用 assocition
元素。property
属性代表映射到POJO属性上。select 配置是命名空间 + SQL id 形式,这样便可以指向对应 Mapper 的 SQL。Mybatis 就会通过对应的 SQL 将数据查询回来。column 代表 SQL 的列,用作参数传递给 selec 属性制定的SQL,如果是多个参数,则需要用逗号隔开。
一对多
<resultMap id="BaseResultMap" type="net.dowhile.yang.entity.Role">
<id column="idrole" jdbcType="BIGINT" property="idrole" />
<result column="rol_name" jdbcType="VARCHAR" property="rolName" />
<result column="descn" jdbcType="VARCHAR" property="descn" />
</resultMap>
<resultMap id="lazyLoadRoles" type="net.dowhile.yang.entity.Role" extends="BaseResultMap">
<collection property="resources" column="idrole" select="net.dowhile.yang.mapper.ResourceMapper.selectResourceByRoleID"/>
</resultMap>
collection 元素,一对多级联,其 select 元素指向 SQL,将通过 column 制定的 SQL 字段作为参数进行传递,然后将结果返回给角色的 resources 属性。
MyBatis 中的级联的更多相关文章
- Mybatis中使用级联查询,一对多的查询
一.需求描述 自己在开发一个小程序的过程中,需要做的一个查询是稍微比较复杂的查询,根据用户信息去查询用户所对应的宠物信息. 一个用户可能对应多个宠物,所以在用户和宠物信息的对应关系就是一对多的关系. ...
- Mybatis中mapper.xml的使用
详解多对多,mybatis多对多查询(xml方式和注解方式) 链接:https://blog.csdn.net/qq_42524262/article/details/98383977 链接:http ...
- mybatis中resultMap配置细则
resultMap算是mybatis映射器中最复杂的一个节点了,能够配置的属性较多,我们在mybatis映射器配置细则这篇博客中已经简单介绍过resultMap的配置了,当时我们介绍了resultMa ...
- Mybatis中resultMap的基础配置
一.概述 resultMap 元素是 MyBatis 中最重要最强大的元素.它就是让你远离 90%的需要从结果集中取出数据的 JDBC 代码的那个东西,而且在一些情形下允许你做一些 JDBC 不支持的 ...
- Mybatis中使用collection进行多对多双向关联示例(含XML版与注解版)
Mybatis中使用collection进行多对多双向关联示例(含XML版与注解版) XML版本: 实体类: @Data @NoArgsConstructor public class Course ...
- Mybatis中使用association进行关联的几种方式
这里以一对一单向关联为例.对使用或不使用association的配置进行举例. 实体类: @Data @ToString @NoArgsConstructor public class IdCard ...
- [原创]关于Hibernate中的级联操作以及懒加载
Hibernate: 级联操作 一.简单的介绍 cascade和inverse (Employee – Department) Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似 ...
- [原创]关于mybatis中一级缓存和二级缓存的简单介绍
关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...
- 记录一次bug解决过程:mybatis中$和#的使用
一.总结 mybatis中使用sqlMap进行sql查询时,经常需要动态传递参数.动态SQL是mybatis的强大特性之一,也是它优于其他ORM框架的一个重要原因.mybatis在对sql语句进行预编 ...
随机推荐
- 小程序获取地址授权的修改 wx.openSetting需点击
开发者可以通过 wx.openSetting 接口来打开小程序设置界面并返回用户的设置结果.在原来的 wx.openSetting 接口中,我们允许开发者直接调用此接口,但目前我们发现有不少开发者滥用 ...
- MVVM框架在unity开发中的使用
1.什么是MVVM 借用一下百度百科上对MVVM的介绍,MVVM是Model-View-ViewModel的简写,它本质上就是MVC 的改进版.MVVM 就是将其中的View 的状态和行为抽象化,让我 ...
- U3D Invoke系列函数
public void Invoke(string methodName, float time) 多少秒后执行某个函数 参数说明: methodName:要执行的函数的名称 time:秒数,time ...
- Netty 心跳服务之 IdleStateHandler 源码分析
前言:Netty 提供的心跳介绍 Netty 作为一个网络框架,提供了诸多功能,比如我们之前说的编解码,Netty 准备很多现成的编解码器,同时,Netty 还为我们准备了网络中,非常重要的一个服务- ...
- 【MongoDB-query查询条件】
在上一篇中简要使用了C# 对MongoDB进行数据操作,这里补充一些MongoDB query查询条件文档: Query.All("name", "a",&qu ...
- C# 异常语句 跳转语句 while循环 穷举法 迭代法
一 异常语句 ♦ try.....catch....finally 结构形式 try{ 可能会出错的代码语句 如果这里出错了,那么不会在继续下面的代码,而是直接进入catch中处理异常}catc ...
- sqlserver C# 数据类型对照表(转载)
数据库中字段类型对应C#中的数据类型: 数据库 C#程序 int int32 text string bigint int64 或 longbinary System ...
- [日常] go语言圣经-声明,变量,赋值,类型,包和文件习题
go语言圣经-声明1.四种类型的声明语句:var.const.type和func,分别对应变量.常量.类型和函数实体对象的声明2.包一级声明语句声明的名字可在整个包对应的每个源文件中访问,局部声明的名 ...
- Redis——非阻塞IO和队列
Redis是个高并发的中间件,但是确实是单线程.而且,Nginx.Node.js等也是单线程的.Redis通过非阻塞IO(IO多路复用)处理那么多的并发客户端连接,并且,由于Redis所有的数据都在内 ...
- 取石子游戏(hdu1527 博弈)
取石子游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...