Mybatis 一对多 关联查询查询
一对多 与 一对一 查询有许多相似之处。
最主要的区别是 查询结果是list,与之对应的标签为collection.
班级和学生,一个班有多个学生,而每个学生只能属于一个班。
此时班级编号作为学生表的外码。
学生实体类:
public class Student { private int id; private String name; }
这时班级类修改为:
public class Classes { private int id; private String name; private Teacher teacher; **private List<Student> list**; }
根据班级编号,查询班级信息,以及此班所有学生的信息。
同样有两种方法:
第一种:
<select id="getClass" parameterType="int" resultMap="getClassMap"> SELECT * from class c,teacher t,student s WHERE s.class_id=c.c_id and c.c_id=#{id} </select> <resultMap type="Classes" id="getClassMap"> <id property="id" column="c_id"/> <result property="name" column="c_name"/> <collection property="list" ofType="Student"> <id property="id" column="s_id"/> <result property="name" column="s_name"/> </collection> </resultMap>
第二种:
<select id="getClass2" resultMap="getClassMap2"> SELECT * FROM class WHERE c_id=#{id} </select> <select id="getStudent" resultType="Student"> SELECT s_id id, s_name name FROM student WHERE class_id=#{id} </select> <resultMap type="Classes" id="getClassMap2"> <id property="id" column="c_id"/> <result property="name" column="c_name"/> <collection property="list" column="c_id" select="getStudent"></collection> </resultMap>
摘自:https://blog.csdn.net/u010785025/article/details/51089233