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 中的级联的更多相关文章

  1. Mybatis中使用级联查询,一对多的查询

    一.需求描述 自己在开发一个小程序的过程中,需要做的一个查询是稍微比较复杂的查询,根据用户信息去查询用户所对应的宠物信息. 一个用户可能对应多个宠物,所以在用户和宠物信息的对应关系就是一对多的关系. ...

  2. Mybatis中mapper.xml的使用

    详解多对多,mybatis多对多查询(xml方式和注解方式) 链接:https://blog.csdn.net/qq_42524262/article/details/98383977 链接:http ...

  3. mybatis中resultMap配置细则

    resultMap算是mybatis映射器中最复杂的一个节点了,能够配置的属性较多,我们在mybatis映射器配置细则这篇博客中已经简单介绍过resultMap的配置了,当时我们介绍了resultMa ...

  4. Mybatis中resultMap的基础配置

    一.概述 resultMap 元素是 MyBatis 中最重要最强大的元素.它就是让你远离 90%的需要从结果集中取出数据的 JDBC 代码的那个东西,而且在一些情形下允许你做一些 JDBC 不支持的 ...

  5. Mybatis中使用collection进行多对多双向关联示例(含XML版与注解版)

    Mybatis中使用collection进行多对多双向关联示例(含XML版与注解版) XML版本: 实体类: @Data @NoArgsConstructor public class Course ...

  6. Mybatis中使用association进行关联的几种方式

    这里以一对一单向关联为例.对使用或不使用association的配置进行举例.  实体类: @Data @ToString @NoArgsConstructor public class IdCard ...

  7. [原创]关于Hibernate中的级联操作以及懒加载

    Hibernate: 级联操作 一.简单的介绍 cascade和inverse (Employee – Department) Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似 ...

  8. [原创]关于mybatis中一级缓存和二级缓存的简单介绍

    关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...

  9. 记录一次bug解决过程:mybatis中$和#的使用

    一.总结 mybatis中使用sqlMap进行sql查询时,经常需要动态传递参数.动态SQL是mybatis的强大特性之一,也是它优于其他ORM框架的一个重要原因.mybatis在对sql语句进行预编 ...

随机推荐

  1. GoogLeNetv3 论文研读笔记

    Rethinking the Inception Architecture for Computer Vision 原文链接 摘要 卷积网络是目前最新的计算机视觉解决方案的核心,对于大多数任务而言,虽 ...

  2. c语言-遍历pci设备(2)mmio访问

    前言 今天其实我在公司也没有做什么,但是昨天就把pcie遍历的mmio形式做了出来,赞扬公司的台湾服务器,至少我可以使用google来去搜索我想要的资料和答案,有一位大神在台湾的论坛上发布了一片博文, ...

  3. Solr 访问 403 错误

    把 Solr 基础环境搭建好后访问发现会出现 403 错误: 解决方法: 找到自己 Tomcat 目录下的 solr ,找到  ...\solr\WEB-INF\web.xml,然后把 169 - 1 ...

  4. C# WebApi 中设置Session可用

    在Global.acax中,添加下面方法 //设置session可用 public override void Init() { PostAuthenticateRequest += MvcAppli ...

  5. MVC用非Entity Framework将数据显示于视图(二)

    这篇<MVC用非Entity Framework将数据显示于视图> http://www.cnblogs.com/insus/p/3364235.html 也算是MVC视图显示数据库的数据 ...

  6. Android获取SD卡总容量,可用大小,机身内存总容量及可用大小

    public long getSDTotalSize() { /*获取存储卡路径*/ File sdcardDir= Environment.getExternalStorageDirectory() ...

  7. EF数据库优先模式(三)

    今天2018年4月1日,呼叫王伟,81192,收到请返航! 接上次说,本节将LINQ以及lambda表达式 LINQ是C#里面针对SQL Server特有的数据访问操作方法,通俗一点说就是类似于写SQ ...

  8. linux系统编程:获取glibc的版本号

    我的环境是ubuntu16.04 glibc官网:http://www.gnu.org/software/libc/libc.html 方法一.一般来说,涉及到库调用的程序,在链接时候都会链接到gli ...

  9. Vue, element-ui Module build failed: Error: No PostCSS Config found

    使用vue框架写pc页面时,我们经常会用到element-ui这个框架. 当我们吧把需要的东西都装在好运行项目的时候,有时会出现这样的错误, Module build failed: Error: N ...

  10. html5+css3图片旋转特效

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...