实现关联表查询

1.一对一关联
当数据库中表与表之间有关联时,在对数据库进行操作时,就不只是针对某一张表了,需要联表查询

MyBatis中如何实现联表查询
1.首先,新建两张表
班级表(class)
ID:c_id
名字:c_name
老师:teacher_id
教师表(teacher)
ID:t_id
姓名:t_name
班级表和教师表通过t_id相连,一个班只有一个老师
2.创建相应的实体类和mapper接口
(1.)创建classes类和teacher类实现关联表查询_第1张图片

实现关联表查询_第2张图片
(2.)创建sql映射文件classMapper.xml
实现关联表查询_第3张图片
(3.)我们先使用嵌套结果映射来处理重复的联合结果的子集封装联表查询的数据(去除重复的数据)
实现关联表查询_第4张图片
(4.)编写测试类代码
实现关联表查询_第5张图片
(5.)运行结果如下:
这里写图片描述
方法二
实体类如方法一,不再赘述,主要来看sql映射文件classMapper.xml,这次我们使用嵌套查询,通过执行另一个SQL映射语句来返回预期的复杂类型
实现关联表查询_第6张图片
(2.)编写测试类:
实现关联表查询_第7张图片
(3.)运行结果如下:
这里写图片描述

MyBatis一对一关联查询总结
 MyBatis中使用association标签来解决一对一的关联查询,association标签可用的属性如下:
• property:对象属性的名称
• javaType:对象属性的类型
• column:所对应的外键字段名称
• select:使用另一个查询封装的结果

一对多关联
在一对一关联的基础上我们再增加一张学生表(student)班级表和学生表通过c_id相连,一个学生只有一个班级
实现关联表查询_第8张图片
1.定义Student实体类
实现关联表查询_第9张图片
2.修改Classes类,添加一个List students属性,使用一个List集合属性表示班级拥有的学生,如下:
实现关联表查询_第10张图片
3.修改classMapper.xml
实现关联表查询_第11张图片
4.使用嵌套结果映射来处理重复的联合结果的子集
实现关联表查询_第12张图片
5.编写测试类
实现关联表查询_第13张图片
6.结果如下:
实现关联表查询_第14张图片
方法二:
实体类同上,直接来看classMapper.xml
7.使用嵌套查询,通过执行另一个SQL映射语句来返回预期的复杂类型
实现关联表查询_第15张图片
8.测试类
实现关联表查询_第16张图片
9.结果如下:
实现关联表查询_第17张图片

MyBatis一对多关联查询总结
 MyBatis中使用collection标签来解决一对多的关联查询,ofType属性指定集合中元素的对象类型。

你可能感兴趣的:(实现关联表查询)