MyBatis:多对一映射处理
查询员工信息以及员工所对应的部门信息
public class Emp {
private Integer eid;
private String empName;
private Integer age;
private String sex;
private String email;
private Dept dept;
//...构造器、get、set方法等
}
1.级联方式处理映射关系
/**
* 根据员工id查询
*/
Emp getEmpById(@Param("id") int id);
<resultMap id="empResultMapone" type="Emp">
<id property="empId" column="emp_id"></id>
<result property="empName" column="emp_name"></result>
<result property="password" column="password"></result>
<result property="email" column="email"></result>
<result property="dept.deptId" column="dept_id"></result>
<result property="dept.deptName" column="dept_name"></result>
</resultMap>
<!--Emp getEmpById(int id);-->
<select id="getEmpById" resultMap="empResultMapone">
select * from t_emp left join t_dept on t_emp.dept_id = t_dept.dept_id where t_emp.emp_id = #{id}
</select>
2.通过association解决多对一的映射关系
<resultMap id="empResultMaptwo" type="Emp">
<id property="empId" column="emp_id"></id>
<result property="empName" column="emp_name"></result>
<result property="password" column="password"></result>
<result property="email" column="email"></result>
<!--
association:处理多对一的映射关系
property:需要处理多对的映射关系的属性名
javaType:该属性的类型
-->
<association property="dept" javaType="Dept">
<id property="deptId" column="dept_id"></id>
<result property="deptName" column="dept_name"></result>
</association>
</resultMap>
<!--Emp getEmpById(int id);-->
<select id="getEmpById" resultMap="empResultMaptwo">
select * from t_emp left join t_dept on t_emp.dept_id = t_dept.dept_id where t_emp.emp_id = #{id}
</select>
3.通过分步查询解决多对一的映射关系
第一步:查询员工的信息
/**
* 通过分步查询,查询部门及对应的所有员工信息
* 分步查询第一步:查询部门信息
*/
Emp getEmpAndDeptByStepOne(@Param("id") int id);
<resultMap id="getEmpAndDeptByStepOne" type="Emp">
<id property="empId" column="emp_id"></id>
<result property="empName" column="emp_name"></result>
<result property="password" column="password"></result>
<result property="email" column="email"></result>
<association property="dept"
select="com.tinstu.mybatis.mapper.DeptMapper.getEmpAndDeptByStepTwo"
column="dept_id"></association>
</resultMap>
<!-- Emp getEmpAndDeptByStepOne(@Param("id") int id);-->
<select id="getEmpAndDeptByStepOne" resultMap="getEmpAndDeptByStepOne">
select * from t_emp where emp_id = #{id}
</select>
第二步:查询部门的信息
/**
* 通过分步查询,查询部门及对应的所有员工信息
* 分步查询第二步:根据部门id查询部门中的所有员工
*/
Dept getEmpAndDeptByStepTwo(@Param("ept_id") int ept_id);
<resultMap id="getEmpAndDeptByStepTwo" type="Dept">
<id property="deptId" column="dept_id"></id>
<result property="deptName" column="depr_name"></result>
</resultMap>
<!-- Dept getEmpAndDeptByStepTwo(@Param("id") int id); -->
<select id="getEmpAndDeptByStepTwo" resultMap="getEmpAndDeptByStepTwo">
select * from t_dept where dept_id = #{dept_id}
</select>
阅读剩余
版权声明:
作者:Tin
链接:http://www.tinstu.com/1254.html
文章版权归作者所有,未经允许请勿转载。
THE END