Mybatis中的监别器:对查询的结果进行分支处理:
话不多说下面大家看例子,总结原理:
- 我的表结构
- EmpInfoMapper.xml
<select id="queryAllEmpins" resultType="HashMap"
resultMap="EmpInoMap">
select * from empinfo
</select>
<resultMap id="EmpInoMap" type="empInfo">
<id column="eid" property="id"/>
<result column="eage" property="age"/>
<result column="ejob" property="job"/>
<result column="ephone" property="phone"/>
<discriminator javaType="String" column="did">
<case value="112" resultType="empInfo">
<result column="ename" property="name"/>
</case>
<case value="121" resultType="empInfo">
<result column="ejob" property="name"/>
</case>
</discriminator>
</resultMap>
- EmpInfoMapper接口
List<EmpInfo> queryAllEmpins();
- 测试类
@Test
public void queryAllEmpById() throws Exception{
//Connection - SqlSession操作myBatis
//config.xml -> reader
Reader reader = Resources.getResourceAsReader("conf.xml");
//reader ->SqlSession
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sessionFactory.openSession();
EmpInfoMapper empInfoMapper = session.getMapper(EmpInfoMapper.class);
List<EmpInfo> empInfo = empInfoMapper.queryAllEmpins();
System.out.println(empInfo);
session.close();
}
- 运行的结果
- 给大家给出我表中的数据方便对照: