用到的表:
image
image
这里有两层关系,就是多个员工对应一个部门(多对一关系)和一个部门对应多个员工(一对多关系)
首先来考虑多对一关系,就是员工查部门,不同的出发点对应不同的关系,也就是说我们想通过已有的员工表将有对应关系的部分表也查出来
那么首先第一步就是需要修改domain中对应的emp类,把部门类型直接加进去 ,如图,
image
然后依旧是经典的test类起手,
image
经典的alt+enter跳到对应的xml和实现类
image
image
image
最重要的就是xml文件了,主要有变化的地方也是xml,这张图上面用的就是分步查询,类似引用子查询的感觉,映射的是一个对象
:告诉 MyBatis,我要映射一个复杂的对象(Dept),而不是简单的 String 或 Integer。
select="...":指定了另一个查询语句的 ID(这里是 DeptMapper 里的 selectById)。
column="deptno":意思是“把当前查询结果中的 deptno 字段的值,作为参数传给上面那个 selectById 方法”
然后就是一对多了,部门查员工,步骤和上面大差不差,但是和不同的是映射的是一个集合在下图中就有体现
image
剩下还是经典的alt+enter
image
image
image
image
最重要的依旧上面的xml,这里是的体现
:告诉 MyBatis,我要映射一个集合(List)。
ofType:指定集合里装的是什么类型(这里是 Emp)。
resultMap:这里复用了 EmpMapper 里的包含全部信息的empMap。
最后就是一对多了,唯一的区别就是sql语句有点不同,其实本质还是多对一,一对多这些,具体展示一下成功的写法
image
image
image
image
image