概述
什么是级联:
一对一: 一个对象对应唯一的对象
一对多: 一个对象对应多个对象
多对多: 多个对象对应多个对象
方式一:xml配置文件方式
创建老师表和课程表:如下图:
Teacher
Course
首先分析这两个表在做多表查询时对应关系。
课程对于老师而言是一对一的关系。
一对一级联步骤:
1.创建关联POJO,一对一级联时,以对象方式存 储关联关系;
2.创建映射器,创建对应的映射器;
3.利用 <association>元素完 成一对一级联;
4.编写测试类验证级联关系;
建立实体类如下图:
配置课程层的xml文件使用resultMap标签
注意:
一对一的关系映射使用的是association
在多表联查中没有显示映射的字段不会被赋值
测试 验证:结果如下
老师对于课程而言是一对多的关系。建立实体类如下图:
一对多级联步骤:
1.创建”一“方POJO 以集合的形式级联“多”方对象
2.创建“多”方对象 创建“多”方的 POJO 对象
3.创建映射器 创建对应的映射器
4.实现一对多级联 利用 collection 元素实现一 对多的级联
5.测试 编写测试文件测试一对多级联
建立实体类,如下图:
再配置老师层的xml文件使用resultMap标签
注意:
一对多的关系映射使用的是collection
使用ofType指定集合中的元素类型
测试结果如下:
方式二: 使用映射器注解多表查询
一对一映射:
语法:
@One( Select = 一对一查询方法, fetchType = FetchType.EAGER )
注:FetchType.lazy 是延时加载,FetchType.EAGER 是即时加载。
一对一使用one属性的@One注解
property代表实体类中声明的属性,column代表传入后面select语句中的参数
select代表查询本条数据时所用的方法的全限定名
一对多映射:
语法:
@Many( Select = 一对多查询方法, fetchType = FetchType.EAGER )
注:FetchType.lazy 是延时加载,FetchType.EAGER 是即时加载。
一对多使用many属性的@Many注解
级联的缺陷:
1.性能缺陷:级联操作会降低性能, 增加程序的执行时间;
2.复杂度缺陷:关联较多造成复杂度的 增加,不利于他人的理 解和维护;
使用建议:
1.根据实际情况增加级联关系。
2.多层关联式,建议超过三层关联时尽量少用级联。
最后
以上就是呆萌苗条为你收集整理的MyBatis实现多表查询(一对一、一对多)什么是级联:方式一:xml配置文件方式的全部内容,希望文章能够帮你解决MyBatis实现多表查询(一对一、一对多)什么是级联:方式一:xml配置文件方式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复