按照结果嵌套处理
<select id="getTeacher" resultMap="TeacherStudent">
select s.id sid,s.name sname,t.name tname,t.id tid
from student s,teacher t
where s.tid=t.id and t.id=#{tid}
</select>
<resultMap id="TeacherStudent" type="Teacher">
<result property="name" column="tname"/>
<result property="id" column="tid"/>
<collection property="students" ofType="Student">
<result property="id" column="sid"/>
<result property="name" column="sname"/>
<result property="tid" column="tid"/>
</collection>
</resultMap>
按照查询嵌套进行查询处理
<select id="getTeacher" resultMap="TeacherStudent2">
select * from teacher where id=#{tid}
</select>
<resultMap id="TeacherStudent2" type="Teacher">
<collection property="students" column="id" javaType="ArrayLIst" ofType="Student" select="getStudentByTeacherId" />
</resultMap>
<select id="getStudentByTeacherId" resultType="Student">
select * from student where id=#{tid}
</select>


这篇博客探讨了在 MyBatis 中如何使用嵌套查询处理数据。第一种方法是通过在同一个 SQL 查询中联合学生和老师表来获取 TeacherStudent 结果集。第二种方式则是通过在外层查询获取老师信息后,使用内联查询(association)或者子查询(collection)来获取每个老师的 Student 列表。这种方法涉及到了 MyBatis 的 resultMap 和 select 标签的使用,以及如何根据老师 ID 获取学生信息。

被折叠的 条评论
为什么被折叠?



