使用collection查询集合属性
介绍resultMap中使用collection查询集合属性
业务需求,查询部门中的多个人员
public class Department {
	
	private Integer id;
	private String departmentName;
	private List<Employee> emps;
setter和getter省略
}
public class Employee {
	
	private Integer id;
	private String lastName;
	private String email;
	private String gender;
	private Department dept;
setter和getter省略
}
1。在department接口写方法
public Department getDeptByIdPlus(Integer id);
2.找到映射文件写
<!--嵌套结果集的方式,使用collection标签定义关联的集合类型的属性封装规则 -->
	<resultMap type="com.atguigu.mybatis.bean.Department" id="MyDept">
		<id column="did" property="id"/>
		<result column="dname" property="departmentName"/>
		<!-- 
			collection定义关联集合类型的属性的封装规则 
			ofType:指定集合里面元素的类型
		-->
		<collection property="emps" ofType="com.atguigu.mybatis.bean.Employee">
			<!-- 定义这个集合中元素的封装规则 -->
			<id column="eid" property="id"/>
			<result column="last_name" property="lastName"/>
			<result column="email" property="email"/>
			<result column="gender" property="gender"/>
		</collection>
	</resultMap>
	<!-- public Department getDeptByIdPlus(Integer id); -->
	<select id="getDeptByIdPlus" resultMap="MyDept">
		SELECT d.id did,d.dname dname,
				e.id eid,e.last_name last_name,e.email email,e.gender gender
		FROM department d
		LEFT JOIN tbl_employee e
		ON d.id=e.did
		WHERE d.id=#{id}
	</select>
	
3进行测试
 @Test
	public void test06() throws IOException{
		SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
		SqlSession openSession = sqlSessionFactory.openSession();
		
		try{
			DepartmentMapper mapper = openSession.getMapper(DepartmentMapper.class);
			Department department = mapper.getDeptByIdPlus(1);
			System.out.println(department);
			System.out.println(department.getEmps());
		}finally{
			openSession.close();
		}
	}	
	
}
运行结果如下:


 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号