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();
}
- 運行的結果
- 給大家給出我表中的數據方便對照: