1在人员接口实现方法

public Employee getEmpByIdStep(Integer id);

2在映射文件进行配置

<!-- public Employee getEmpByIdStep(Integer id);-->
<select >
select * from tbl_employee where id=#{id}
</select>

3写鉴别器

<!-- <discriminator javaType=""></discriminator>
鉴别器:mybatis可以使用discriminator判断某列的值,然后根据某列的值改变封装行为
封装Employee:
如果查出的是女生:就把部门信息查询出来,否则不查询;
如果是男生,把last_name这一列的值赋值给email;
-->
<resultMap type="com.atguigu.mybatis.bean.Employee" />
</case>
</discriminator>
</resultMap>

3在junit进行测试

@Test
public void test05() throws IOException{
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession();
try{
EmployeeMapperPlus mapper = openSession.getMapper(EmployeeMapperPlus.class);
Employee employee = mapper.getEmpByIdStep(4);
System.out.println(employee);
System.out.println(employee.getDept());
}finally{
openSession.close();
}
}

结果如下:

使用discriminator实现鉴别器

@Test
public void test05() throws IOException{
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession();
try{
EmployeeMapperPlus mapper = openSession.getMapper(EmployeeMapperPlus.class);
Employee employee = mapper.getEmpByIdStep(1);
System.out.println(employee);
System.out.println(employee.getDept());
}finally{
openSession.close();
}
}

结果如下:

使用discriminator实现鉴别器

 

相关文章: