鉴别器的使用
需求:男性体检表和女性体检表有不同的检查项,我们需要根据员工的性别,对应不同类型的体检表。
根据员工id获取男职工体检表:
根据员工id获取女职工体检表:
员工数据表:
id为员工号字段
sex为性别字段
POJO:
public class Employee{
private Long id;
private String realName;
private SexEnum sex = null;
private Date birthday;
private String mobile;
private String email;
private String position;
private String note;
private WorkCard workCard;
private List<EmployeeTask> employeeTaskList = null;
//include getter and setter methods
}
public class MaleEmployee extends Employee
{
private MaleHealthForm maleHealthForm = null;
//include getter and setter methods
}
public class FemaleEmployee extends Employee
{
private FemaleHealthForm femaleHalthForm = null;
//include getter and setter methods
}
根据员工id查询员工信息:
结果集映射:
<association>同样是一个一一映射,property指定的是POJO类employee类的字段;column指定的是employee数据表的列名,使用它进行级联查询。select指定的某个Mapper的某个select语句
<collection>是一对多查询,property指定的是POJO类employee类的字段,column指定的是employee数据表的列名,使用它进行级联查询。select语句指定使用某个Mapper的某个select语句
<discriminator>是一个鉴别器,根据某种条件选择不同的映射。javaType指定的是鉴别字段的类型,这里根据POJO指定的sex类型,转成int类型表示了,column指定的是数据表中的列名。
case指定不同的鉴别器选项,value指的是column列值,如果匹配,使用指定的resultType。
extends指定的是该结果集继承自某个结果集,所以在这个映射集中也可以使用Employee的相关字段;<association>指定一个一对一映射查询,根据id查询体检表。