Mybatis_20_结果集映射 resultMap 复杂类型使用(一对多的处理)

结果集映射 resultMap 复杂类型使用(一对多的处理)

  - association 关联 [多对一]  多个学生对应一个老师

  - connection  集合 [一对多]  一个老师对应多个学生

  - javaType 和 ofType

    javaType 用来指定实体类中的某个属性的类型
  
    ofType  用来指定集合映射到List或者集合中的pojo类型。(集合泛型中的约束类型)

     
  - 例如一个老师对应多个学生,对于老师而言就是一对多的关系。
   
  - 第一种方式   获取指定老师下的所有学生信息,以及该老师的信息

   <select id="getTeacher1" resultMap="getTeacher1">
       SELECT
          S.ID SID, S.NAME SNAME, T.NAME TNAME,T.ID TID
   	FROM
          STUDENT S
       JOIN
          TEACHER T
       ON
          S.TID=T.ID
       WHERE
          T.ID=#{tid};

    </select>

   <resultMap id="getTeacher1" type="com.shige.pojo.Teacher">
           <result property="id" column="tid"/>
           <result property="name" column="tname"/>

           <!--复杂类型-->
           <collection property="students" ofType="com.shige.pojo.Student">
               <result property="id" column="sid"/>
               <result property="name" column="sname"/>
               <result property="tid" column="tid"/>
           </collection>

   </resultMap>



 - 第二种方式(子查询) 获取指定老师下的所有学生信息,以及该老师的信息

   <select id="getTeacher2" resultMap="getTeacher2">
       select * from teacher where id=#{tid};
   </select>

   <resultMap id="getTeacher2" type="com.shige.pojo.Teacher">
       <collection property="students"  javaType="ArrayList"  ofType="com.shige.pojo.Student"  select="getStudent"  column="id"/>
   </resultMap>

   <select id="getStudent" resultType="com.shige.pojo.Student">
       select * from student where tid=#{tid};
   </select>
上一篇:Mybatis的多对一和一对多处理


下一篇:Linux多线程之pthread_self