实体类
public class Dept {
private Integer deptId;
private String deptName;
private List<Emp> emps;
.....
}
接口方法
// 查询部门以及部门中的员工信息
Dept getDeptAndEmpByDeptId(@Param("deptId") Integer deptId);
映射文件
<!-- collection:处理一对多的映射关系()(处理集合类型的属性)-->
<resultMap id="deptAndEmpResultMap" type="Dept">
<id column="dept_id" property="deptId"></id>
<result column="dept_name" property="deptName"></result>
<!--ofType:设置集合类型的属性中存储的数据类型-->
<collection property="emps" ofType="Emp">
<id column="emp_id" property="empId"></id>
<result column="emp_name" property="empName"></result>
<result column="age" property="age"></result>
<result column="gender" property="gender"></result>
</collection>
</resultMap>
<!-- Dept getDeptAndEmpByDeptId(@Param("deptId") Integer deptId);-->
<select id="getDeptAndEmpByDeptId" resultMap="deptAndEmpResultMap">
select * from t_dept left join t_emp on t_dept.dept_id=t_emp.dept_id where t_dept.dept_id=#{deptId};
</select>
id column="dept_id",这里指定dept_id为主键id,即查询出dept_id相同的数据有多条时,会将collection 对应属性值映射到实体的list集合中
测试类
@Test
public void testGetDeptAndEmpByDeptId(){
SqlSession session = SqlSessionUtil.getSession();
DeptMapper mapper = session.getMapper(DeptMapper.class);
Dept deptAndEmpByDeptId = mapper.getDeptAndEmpByDeptId(1);
System.out.println(deptAndEmpByDeptId);
}