数据库中的结构:
实体类:
????????
最终结果:
?
一:级联属性查询
自定义resultMap中可以这样设置:
<resultMap id="empAndDeptResultMapOne" type="Emp">
<id property="eid" column="eid"></id>
<result property="empName" column="emp_name"></result>
<result property="age" column="age"></result>
<result property="sex" column="sex"></result>
<result property="email" column="email"></result>
<result property="dept.did" column="did"></result>
<result property="dept.deptName" column="dept_name"></result>
</resultMap>
二:association
在resultMap映射中增加association属性
<resultMap id="empAndDeptResultMapTwo" type="Emp">
<id property="eid" column="eid"></id>
<result property="empName" column="emp_name"></result>
<result property="age" column="age"></result>
<result property="sex" column="sex"></result>
<result property="email" column="email"></result>
<!--association 处理多对一的映射关系
property表示需要处理映射关系的属性名
javaType表示该属性的类型
-->
<association property="dept" javaType="Dept">
<id property="did" column="did"></id>
<result property="deptName" column="dept_name"></result>
</association>
</resultMap>
三:分步查询
? ? ? ? 查询对应eid的信息
<select id="getEmpAndDeptByStepOne" resultMap="empAndDeptByStepResultMap">
select * from t_emp where eid = #{eid}
</select>
? ? ? ? 根据在第一个sql语句中的did来查询t_dept中的信息
? ? ? ? 其中resultMap中为:
<resultMap id="empAndDeptByStepResultMap" type="Emp">
<id property="eid" column="eid"></id>
<result property="empName" column="emp_name"></result>
<result property="age" column="age"></result>
<result property="sex" column="sex"></result>
<result property="email" column="email"></result>
<!--select:设置分步查询的唯一标识(namespace)的全类名
column:设置分步查询的条件
<property:需要处理的实体类属性
-->
<association property="dept"
select="mybatis.mapper.DeptMapper.getEmpAndDeptByStepTwo"
column="did"></association>
</resultMap>
将从第一个sql语句中得到的did传入这个唯一标识
<!--Dept getEmpAndDeptByStepTwo(Integer did);-->
<select id="getEmpAndDeptByStepTwo" resultType="Dept">
select * from t_dept where did = #{did}
</select>
|