MyBatis的discriminator鉴别器的作用
DepartmentMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cn.mybatis.dao.DepartmentMapper">
<!-- public Department getDeptById(Integer id); -->
<select id="getDeptById" resultType="com.cn.zhu.bean.Department">
select id,dept_name
departmentName from tbl_dept where id=#{id}
</select>
</mapper>
EmployeeMapperPlus.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cn.mybatis.dao.EmployeeMapperPlus">
<!-- public Employee getEmpByIdStep(Integer id); -->
<select id="getEmpByIdStep" resultMap="MyEmpDis">
select * from tbl_employee
where id=#{id}
</select>
<!--
分布好处 可以使用延迟加载 Employee==>Dept 我们每次查询Employee对象的时候,都将一起查询出来。
部门信息在我们使用的时候再去查询 分段查询的基础之上加上两个配置
-->
<!--
查询二 查询部门的时候将部门对应的所有员工信息也查询出来 public List<Employee>
getEmpsByDeptId(Integer deptId);
-->
<!-- public List<Employee> getEmpsByDeptId(Integer deptId); -->
<select resultType="com.cn.zhu.bean.Employee" id="getEmpsByDeptId">
select * from
tbl_employee where d_id=#{deptId}
</select>
<!--
鉴别器discriminator mybatis可以使用discriminator判断某列的值,然后根据某列的值改变封装行为
封装Employee: 如果查出的是女生,就把部门信息查询出来,否则不查询 如果是男生,把last_name这一列的值赋值给email;
-->
<resultMap type="com.cn.zhu.bean.Employee" id="MyEmpDis">
<id column="id" property="id" />
<result column="last_name" property="lastName" />
<!-- 把last_name 赋值给email -->
<result column="email" property="email" />
<result column="gender" property="gender" />
<!--
association 定义管理对象的封装规则 select: 表明当前属性是调用select 指定的方法 colum:
指定将哪一列的值传给这个方法 流程 : 使用select 指定的方法(