pojo
@Data
public class Student {
private int id;
private String name;
//以下属性用于一对多
private int tid;
}
@Data
public class Teacher {
private int id;
private String name;
//以下属性为了一对多
private List<Student> students;
}
方法一(推荐):
<select id="getTeacherStudentList" 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="id" column="tid"/>
<result property="name" column="tname"/>
<!--复杂的属性 集合中的泛型信息,使用ofType获取-->
<collection property="students" ofType="Student">
<result property="id" column="sid"/>
<result property="name" column="sname"/>
<result property="tid" column="tid"/>
</collection>
</resultMap>
方法二:
<!--子查询方式-->
<select id="getTeacherStudentList2" resultMap="TeacherStudent2">
select * from mybatis.teacher where id=#{tid}
</select>
<resultMap id="TeacherStudent2" type="Teacher">
<collection property="students" javaType="ArrayList" ofType="Student" select="getStudentByTeacherID" column="id"/>
</resultMap>
<select id="getStudentByTeacherID" resultType="Student">
select * from student where tid=#{tid}
</select>
</mapper>