多对一查询使用的是嵌套方式:
<select id="getStudent2" resultMap="studentTeacher2"> select s.id sid,s.name sname,t.name tname from mybatis.student s,mybatis.teacher t where s.tid = t.id; </select> <!-- property实体类 column数据库 起了别名就用别名--> <resultMap id="studentTeacher2" type="student"> <result property="id" column="sid"/> <result property="name" column="sname"/>
<!--复杂的属性,需要单独处理 如果是一个对象就用association,集合使用collection javaType="Teacher"对象类型 --> <association property="teacher" javaType="Teacher"> <result property="name" column="tname"/> </association> </resultMap>
一对多查询嵌套方式:
<select id="getTeacher" resultMap="TeacherStudent"> select s.id sid,s.name sname,t.name tname,t.id tid from mybatis.teacher t ,mybatis.student s 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"/> <!-- 集合使用collection,集合中的泛型信息使用ofTyp获取--> <collection property="students" ofType="student"> <result property="id" column="sid"/> <result property="name" column="sname"/> <result property="tid" column="tid"/> </collection> </resultMap>