mybaits的一对多,多对一实现
多对一
一个老师有5个学生 【集合】
5个学生关联一个老师【关联】 多对一的时候resultMap里面不用result去一一对应查询sql的表列和实体类属性名称了。多的那一项要用 association【可以理解为一个对象】
方法一:通过子查询的方法来
思路:先查Student信息,根据查出来Student的tid 子查询查询Teacher数据
<select id="getTeacherList" resultType="teacher"> select * from mybaits.teacher where id=#{id} select> <select id="getStudentList" resultMap="studentlist"> select * from mybaits.student select> <resultMap id="studentlist" type="student"> <result property="id" column="id"/> <result property="name" column="name"/> <association property="teacher" column="tid" javaType="teacher" select="getTeacherList"/> resultMap>
方法二:关联查询
<select id="getStudentList1" resultMap="studentlist1"> select a.id sid,a.name sname ,b.name tname from mybaits.student a, mybaits.teacher b where a.tid=b.id select> <resultMap id="studentlist1" type="student"> <result property="id" column="sid"/> <result property="name" column="sname"/> <association property="teacher" javaType="teacher">
<result property="name" column="tname"/> association> resultMap>
一对多:
一对多用:collection
一对多可以理解为一个对象,一个列表
总结:
多对一:关联 association
一对多:集合 collection
javaType:用于指定实体类中属性的类型
ofType:用于指定映射到集合或者list中的pojo实体类型 泛型中的约束类型