Mybatis实现多表的查询分为以下两种:
方式一:sqlMapper配置文件
一对一:在resultMap标签中使用 association 标签
一对多:在resultMap 标签中使用collection 标签
方式二:注解
一对一:在@Results 注解中的@Result注解中使用@One注解
一对多:在@Results 注解中的@Result 注解中使用@Many注解
要想实现一对一、一对多的关系,我们需要在编写代码分清楚表的关系,是一对一的关系还是一对多的关系,以下我们将进行举例说明:
我们将用到学生表(student)和班级表(class),在写之前我们先判断两表之间的关系,以学生表方向来考虑,一个学生肯定是对应一个班级编号的,例如学生甲不可能即使一班的也是二班的所以学生表对班级表就是一对一的关系;我们再从班级表来考虑,一个班级不可能只有一个学生,肯定会有很多的学生,所以班级表对学生表就是一对多的关系,分析表之间的关系后,我们就可以进行代码编写。
如下所示是两个表:
学生表:
班级表:
一、一对一查询(sqlMapper配置文件)
1.在上面我们已经分析清楚后知道学生表对班级表是一对一的关系;
2..创建Student、Banji实体类,在学生表实体类中增加班级表的外部属性(班级对象)如下:
(图中未显示有参、无参、get、set、toString方法)
3.创建StudentMapper接口
4.配置xml文件
5.测试结果(部分)
二、一对多查询(sqlMapper配置文件)
1.班级表对学生表是一对多的关系;
2.创建Banji、Student实体类,在班级实体类中写学生表的外部属性;
3.创建BanjiMapper接口
4.配置xml文件
5.测试结果
三、一对一查询(注解)
1.学生表对班级表是一对一的关系;
2..创建Student、Banji实体类,在学生表实体类中增加班级表的外部属性(班级对象)如下:
(图中未显示有参、无参、get、set、toString方法)
3.创建StudentMapper接口
4.创建BanjiMapper接口
5.测试结果
四、一对多查询(注解)
1.班级表对学生表是一对多的关系;
2.创建Banji、Student实体类,在班级实体类中写学生表的外部属性;
3.创建BanjiMapper接口
4.创建StudentMapper接口
5.测试结果
以上是Mybatis的一对一、一对多的多表查询,希望对大家理解Mybatis的多表查询有所帮助。
请留下你的点赞哦!