背景:
Employee.java
package com.mybatis.bean;
import org.apache.ibatis.type.Alias;
public class Employee {
private Integer id;
private String lastName;
private String email;
private String gender;
private Department dept;
省略getter/setter/toString()/构造方法
}
Department.java
package com.mybatis.bean;
import java.util.List;
public class Department {
private Integer id;
private String departmentName;
private List<Employee> emps; 《=注意这个地方
省略getter/setter/toString()/构造方法
}
问题:
查询部门的时候将部门对应的所有员工信息查询出来
做法1(非分步查询法):
做法2(分步查询法):
在EmployeeMapperPlus的接口和映射文件有这个方法
在departmentMapper的接口和映射文件是如下方法
运行结果:
tips:
扩展:多列的值传递过去;
将多列的值封装map传递;
column="{key1=column1,key2=column2}"
fetchType="lazy":表示使用延迟加载;
-lazy:延迟
-eager:立即
<discriminator javaType=""></discriminator>
鉴别器:mybatis可以使用discriminator判断某列的值,然后根据某列的值改变封装行为
封装Employee:
如果查出的是女生:就把部门信息查询出来,否则不查询
如果是男生,把last_name这一列的值赋值给email