实现关联表查询

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

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

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

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

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

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

猜你喜欢

转载自blog.csdn.net/qq_42007309/article/details/82560829