JavaEE-SSM:015 Mybatis映射器(6)

鉴别器的使用

需求:男性体检表和女性体检表有不同的检查项,我们需要根据员工的性别,对应不同类型的体检表。

根据员工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查询体检表。

猜你喜欢

转载自blog.csdn.net/Day_and_Night_2017/article/details/84285803