一. 例子
DepartmentMapperResultMap.java
package com.atguigu.mybatis.dao;
import com.atguigu.mybatis.beans.Department;
public interface DepartmentMapperResultMap {
public Department selectDepartmentById(Integer id);
}
DepartmentMapperResultMap.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.atguigu.mybatis.dao.DepartmentMapperResultMap">
<!-- public Department selectDepartmentById(Integer id); -->
<select id="selectDepartmentById" resultType="com.atguigu.mybatis.beans.Department">
select id, dept_name departmentName from tbl_dept where id = #{id}
</select>
</mapper>
EmployeeMapperResultMap.xml
<!-- public Employee selectEmployeeAndDeptStep(Integer id); -->
<select id="selectEmployeeAndDeptStep" resultMap="myEmpAndDeptStep">
select id, last_name, email, gender, d_id from tbl_employee where id = #{id}
</select>
<resultMap type="com.atguigu.mybatis.beans.Employee" id="myEmpAndDeptStep">
<id column="id" property="id"/>
<result column="last_name" property="lastName"/>
<result column="email" property="email"/>
<result column="gender" property="gender"/>
<!-- 分步查询
select: 指定要调用的查询
column:传递给调用的查询的参数
-->
<association property="dept"
select="com.atguigu.mybatis.dao.DepartmentMapperResultMap.selectDepartmentById"
column="d_id" >
</association>
</resultMap>
TestMyBatisResultMap.java
@Test
public void testResultMapAssociationStep() throws Exception {
SqlSessionFactory ssf = getSqlSessionFactory();
SqlSession session = ssf.openSession();
try {
EmployeeMapperResultMap mapper = session.getMapper(EmployeeMapperResultMap.class);
Employee employee = mapper.selectEmployeeAndDeptStep(1001);
System.out.println(employee);
session.commit();
} finally {
// TODO: handle finally clause
session.close();
}
}
public SqlSessionFactory getSqlSessionFactory() throws Exception {
String resource = "mybatis-config.xml";
InputStream inputStream =
Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
return sqlSessionFactory;
}