0


MyBatis如何实现多表联查

一、什么是级联

    级联(cascade),是指多个对象之间的映射关系,建立数据之间的级联关系提高管理效率
  • 一对一:一个对象对应唯一的对象
  • 一对多:一个对象对应多个对象
  • 多对多:多个对象对应多个对象

二、实现多表联查的方式

方式一:通过xml配置文件

     举例:学生和班级的关系,很明显一个学生对应一个班级,是一对一的关系

1.一对一级联步骤:

          1.1 创建关联POJO:一对一级联时,以对象方式存储关联关系

          1.2 创建对应的映射器

          1.3 利用<association>元素完成一对一级联
  • 在Student类中包含一个Banji对象

  • property映射到列结果的字段或属性。如果JavaBean 有这个名字的属性(property),会先使用该属性

  • column数据库中的列名,或者是列的别名

           1.4 编写测试类验证级联关系,测试结果如下:
    


       举例:班级和学生的关系,一个班级会有很多学生,是一对多的关系

2.一对多级联步骤:

          2.1 创建"一"方POJO以集合的形式级联"多"方对象

          2.2 创建“多”方的POJO对象

          2.3 创建对应的映射器

          2.4 利用collection元素实现一对多级联

         2.5 编写测试文件测试一对多级联,测试结果如下:

* 需要注意的是在多表联查中没有显示映射的字段不会被赋值,所以为null


方式二:使用映射器注解方式

还是上面两个表的例子,只是方式变了

1.一对一映射:

** 语法:@One(Select = 一对一查询方法,fetchType = FetchType.EAGER)**

** 说明:FetchType.lazy是延时加载,**FetchType.EAGER是即时加载

一对一使用one属性,@one注解


2.一对多映射:

            语法:** @Many(select =一对多查询方法,fetchType = FetchType.EAGER)**

** 说明:FetchType.lazy是延时加载,**FetchType.EAGER是即时加载

一对多使用many属性,@many注解

三、级联的缺陷:

  1. 性能缺陷:级联操作会降低性能,增加程序的执行时间;
  2. 复杂度缺陷:关联较多造成复杂度的增加,不利于他人理解和维护;

** 在使用上建议:**根据实际情况增加级联关系;多层关联,超过三层关联时建议尽量少用级联;

标签: mybatis java mysql

本文转载自: https://blog.csdn.net/m0_70314224/article/details/125380467
版权归原作者 F_549329652 所有, 如有侵权,请联系我们删除。

“MyBatis如何实现多表联查”的评论:

还没有评论