MyBatis如何实现多表查询

目录

写在前面

手动处理映射关系(xml配置方式)

数据库表及关系

一对一查询

 一对多查询

 Mybatis注解实现多表查询

基本注解的分类

注解中的 一对一映射

注解中的 一对多映射


写在前面

在数据库中表与表的关系可以分为: 一对一、一对多、多对多、多对一。在Mybatis中,多对一的关系可以看成一对一的关系。

这里我会把一对一和一对多的关系用xml配置方式以及注解方式总结一下如何实现多表查询。

手动处理映射关系(xml配置方式)

数据库表及关系

我们以学校中老师和课程之间的关系为例,一个老师可以教多门课程,一个课程对应的老师是一个。所以老师对课程一对多关系,课程对老师是一对一关系(我的表格关系是这样)。表如下图所示:

一对一查询

一对一查询步骤如图所示: 

 首先我们在课程实体类中加入老师成员变量表示一对一映射。

 

 在课程接口中提供查询所有方法findAllCourse(),以便加载时调用。

 

 

 然后配置课程层的xml文件使用resultMap标签,注意一对一的关系映射使用的是association

 

 最后通过测试类找到与每一个课程相关的授课老师

 

 一对多查询

 一对多查询步骤如图所示:

 在老师实体类中加入课程集合成员变量,表示一对多映射关系。

 

 在老师接口中提供查询老师教授的所有课程的方法以便加载时调用。

 然后再配置老师层的xml文件使用resultMap标签,注意一对多的关系映射使用的是collection

 

  最后通过测试类找到与一个授课老师教授的多个课程

 Mybatis注解实现多表查询

基本注解的分类

可以在接口文件中直接利用注解中的增删改查对应关键字语句,简化了配置文件,如下图所示:

注解中的 一对一映射

 一对一使用one属性的@One注解

property代表实体类中声明的属性,column代表传入后面select语句中的参数

select代表查询本条数据时所用的方法的全限定名

 

 注解中的 一对多映射

一对多使用many属性的@Many注解

 注意:mapper.xml和注解可以共存搭配使用,但xml中的resultMap和注解中的results不能同时附给同一条SQL语句