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>