0


MyBatis如何实现多表查询(一对一、一对多)

当我们需要从数据库获取的数据不光是一张表的数据,而是两张或两张表以上整合或分别提取的字段时,例如拿学生和班级的关系来说,查一个班级内所有学生的信息,因为班级表和学生表是分开定义的,这时候就需要用到多表联合查询。

那么要想在Mybatis中玩转联查,最主要的就是弄清表跟表之间的关系,谁对谁是一对一,谁对谁是一对多。

一对一关系

我们还是拿学生和班级的例子来说,要查一个学生所在班级的信息,一个学生对应着一个班级,所以是一对一的关系。前期的准备工作:我这里是创建了两个实体类学生和班级,也在数据库创建了两张对应的表。

学生类:

班级类:

student表:

class表:

下面是具体的代码实现:

方式一:sqlMapper配置文件形式

在resultMap标签中使用 association 标签

通过下面这条select语句去查询:

下面是查询结果,忽略这里的stulist,这是后面一对多查询时候用到的字段。

方式二:注解的形式

在@Results 注解中的@Result注解中使用@One注解

查询结果跟上面是一致的。

一对多/多对一

我觉得一对多和多对一查询起来都一样,比如说一个班级有多个学生,反过来就是多个学生对应一个班级,只是站的角度不一样,查询出来的结果是一样的,这里例子给出的是查询一个班级的所有学生信息。下面是实现代码:

方式一:sqlMapper配置文件形式

在resultMap 标签中使用collection 标签

通过下面这条select语句去查询:

下面是查询结果,忽略这里的bj,这是前面一对一查询时候用到的字段。

方式二:注解的形式

在@Results 注解中的@Result 注解中使用@Many注解

查出来的结果跟上面也是一致的。

总结:

MyBatis中有两种方式去实现多表联查:

方式一:sqlMapper配置文件

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

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

方式二:注解

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

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

** 看完如果对你有帮助,记得点赞!点赞!点赞!**


本文转载自: https://blog.csdn.net/X18406432083/article/details/125413772
版权归原作者 锡伯利亚 所有, 如有侵权,请联系我们删除。

“MyBatis如何实现多表查询(一对一、一对多)”的评论:

还没有评论