学无先后,达者为师

网站首页 编程语言 正文

MyBatis实现多表查询(一对一、一对多)的方式

作者:l1050188952 更新时间: 2022-09-25 编程语言

MyBtis的多表查询方式有两种:sqlMapper配置文件和注解

具体代码实现如下:

首先我们以两张数据库表学生和班级为例,一个学生只对应一个班级(一对一),一个班级对应多个学生(一对多)。表如下:

学生表:

 班级表:

 

方式一:sqlMapper配置文件

一对一:在resultMap标签中使用 association 标签

sqlMappe.xml实现一对一:

注意:单表查询只需用<result>标签写映射不上的内容,但多表联查必须把需要的映射关系都写上

代码实现结果:

 

标注:绿色框内是学生信息,右边框内是每个学生对应的班级信息。 

一对多:在resultMap标签中使用collection 标签

sqlMappe.xml实现一对多:

 注意:ofType属性写的是集合对应的类型,不能写List。

代码实现结果:

 注释:* 级联操作会降低性能,增加程序执行时间,多层关联式建议不超过三层

方式二:注解

 

一对一:在@Results 注解中的@Result注解中使用@One注解

一对一注解代码:

 

注意: 班级Mapper中findById的参数来自学生Mapper的@Result对应外部属性名映射的column属性,One的路径一只写到xx.xx.x.方法名

代码结果实现:

注意:虽然只是一对一的查询,但是对于数据库是多次访问的,如下图

 

一对多:在@Results 注解中的@Result 注解中使用@Many注解

一对多注解代码:

                                                        班级Mapper的注解↓

StudentMapper对应方法↓

 

注释:一对多和一对一的区别在@many注解,其他基本都是一样的 

代码结果实现:

       

以上就是关于MyBatis实现多表查询(一对一、一对多)的两种方式图示

 

原文链接:https://blog.csdn.net/l1050188952/article/details/125411662

栏目分类
最近更新