结果集映射 resultMap 复杂类型使用(一对多的处理)
- association 关联 [多对一] 多个学生对应一个老师
- connection 集合 [一对多] 一个老师对应多个学生
- javaType 和 ofType
javaType 用来指定实体类中的某个属性的类型
ofType 用来指定集合映射到List或者集合中的pojo类型。(集合泛型中的约束类型)
- 例如一个老师对应多个学生,对于老师而言就是一对多的关系。
- 第一种方式 获取指定老师下的所有学生信息,以及该老师的信息
<select id="getTeacher1" resultMap="getTeacher1">
SELECT
S.ID SID, S.NAME SNAME, T.NAME TNAME,T.ID TID
FROM
STUDENT S
JOIN
TEACHER T
ON
S.TID=T.ID
WHERE
T.ID=#{tid};
</select>
<resultMap id="getTeacher1" type="com.shige.pojo.Teacher">
<result property="id" column="tid"/>
<result property="name" column="tname"/>
<!--复杂类型-->
<collection property="students" ofType="com.shige.pojo.Student">
<result property="id" column="sid"/>
<result property="name" column="sname"/>
<result property="tid" column="tid"/>
</collection>
</resultMap>
- 第二种方式(子查询) 获取指定老师下的所有学生信息,以及该老师的信息
<select id="getTeacher2" resultMap="getTeacher2">
select * from teacher where id=#{tid};
</select>
<resultMap id="getTeacher2" type="com.shige.pojo.Teacher">
<collection property="students" javaType="ArrayList" ofType="com.shige.pojo.Student" select="getStudent" column="id"/>
</resultMap>
<select id="getStudent" resultType="com.shige.pojo.Student">
select * from student where tid=#{tid};
</select>