1.实体类
1 public class Student { 2 private int id; 3 private String name; 4 } 5 public class Classes { 6 private int id; 7 private String name; 8 private Teacher teacher; 9 private List<Student> students; 10 }
2.映射文件
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3 <mapper namespace="com.zhengbin.entity.classMapper"> 4 <!-- 方式一: 嵌套结果: 使用嵌套结果映射来处理重复的联合结果的子集 5 SELECT * FROM class c, teacher t,student s WHERE c.teacher_id=t.t_id AND c.C_id=s.class_id AND c.c_id=1 6 --> 7 <select id="getClass3" parameterType="int" resultMap="ClassResultMap3"> 8 select * from class c, teacher t, student s where c.teacher_id=t.t_id and c.C_id=s.class_id and c.c_id=#{id} 9 </select> 10 <resultMap type="Classes" id="ClassResultMap3"> 11 <id property="id" column="c_id" /> 12 <result property="name" column="c_name" /> 13 <association property="teacher" javaType="Teacher"> 14 <id property="id" column="t_id"/> 15 <result property="name" column="t_name"/> 16 </association> 17 <!-- ofType 指定 students 集合中的对象类型 --> 18 <collection property="list" ofType="Student"> 19 <id property="id" column="s_id" /> 20 <result property="name" column="s_name" /> 21 </collection> 22 </resultMap> 23 24 <!-- 方式二:嵌套查询:通过执行另外一个 SQL 映射语句来返回预期的复杂类型 25 SELECT * FROM class WHERE c_id=1; 26 SELECT * FROM teacher WHERE t_id=1 27 //1 是上一个查询得到的 teacher_id 的值 SELECT*FROMstudentWHEREclass_id=1 28 //1是第一个查询得到的c_id字段的值 29 --> 30 <select id="getClass4" parameterType="int" resultMap="ClassResultMap4"> 31 select * from class where c_id=#{id} 32 </select> 33 <resultMap type="Classes" id="ClassResultMap4"> 34 <id property="id" column="c_id" /> 35 <result property="name" column="c_name" /> 36 <association property="teacher" column="teacher_id" javaType="Teacher" select="getTeacher2"></association> 37 <collection property="list" ofType="Student" column="c_id" select="getStudent"></collection> 38 </resultMap> 39 <select id="getTeacher2" parameterType="int" resultType="Teacher"> 40 SELECT t_id id, t_name name FROM teacher WHERE t_id=#{id} 41 </select> 42 <select id="getStudent" parameterType="int" resultType="Student"> 43 SELECT s_id id, s_name name FROM student WHERE class_id=#{id} 44 </select> 45 </mapper>