Mybatis 一对多的处理
我们可以把多对一比作为一个班级,班级有学生若干个,但老师只有一个。
要求把每个学生对应的老师全部查询出来:
多对一处理有两种 常用方式:
一.
*
按结果查询
1.写两个查询,分别查询出老师和学生
2.字段名和数据库名称不相同,使用 "resultMap"
<resultMap id="StudentTeacher" type="Student">
<result property="id" column="id"/>
<result property="name" column="name"/>
<!--复杂的属性,我们需要单独处 对象:association 集和:collection-->
<association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/>
</resultMap>
二.
按照结果集嵌套
1.查询出所有学生
sql 建议写成:
select s.id sid,s.name sname,t.name tname
from student s,teacher t
where s.tid=t.id
数据库名称和字段不一样 使用resultMap
<resultMap id="StudentTeacher2" type="Student">
<result property="id" column="sid"/>
<result property="name" column="sname"/>
<association property="teacher" javaType="Teacher">
<result property="name" column="tname"/>
</association>
</resultMap>
第一种方式:SQL痛苦,映射简单
第二种方式:SQL少,映射痛苦
第二种方式比较好理解,第一种有点复杂,根据每个人的喜好选择(本博主还是认为第二种简单好用)
来源:CSDN
作者:Gosions
链接:https://blog.csdn.net/Gosions/article/details/103465068