Mybatis——多对一的处理的两种方式
一、用到的数据库表
- student表
tid为外键关联teacher表的主键id - teacher表
二、多对一的处理的两种方式
对于学生而言,多个学生属于一个老师,为多对一关系
因此在student实体类需要声明teacher对象
1.按照查询进行嵌套处理
<!--思路:1。查询所有的学生信息
2.根据学生的tid寻找对应的老师-->
<select id="getStudent" resultMap="StudentTeacher">
select * from student
</select>
<resultMap id="StudentTeacher" type="com.yyx.pojo.Student">
<id property="id" column="id"/>
<id property="name" column="name"/>
<id property="birthday" column="birthday"/>
<!--复杂的属性我们需要单独处理 对象:association 集合:collection-->
<association property="teacher" column="tid" javaType="com.yyx.pojo.Teacher" select="getTeacher"/>
</resultMap>
<select id="getTeacher" resultType="com.yyx.pojo.Teacher">
select * from teacher where id=#{tid}
</select>
2.按照结果进行嵌套处理
<select id="getStudent2" resultMap="StudentTeacher2">
SELECT s.id sid,s.name sname,s.gender sgender,s.birthday sbirthday,t.name tname FROM student s,teacher t WHERE s.tid=t.id
</select>
<resultMap id="StudentTeacher2" type="com.yyx.pojo.Student">
<result property="id" column="sid"/>
<result property="name" column="sname"/>
<result property="gender" column="sgender"/>
<result property="birthday" column="sbirthday"/>
<association property="teacher" javaType="com.yyx.pojo.Teacher">
<result property="name" column="tname"/>
</association>
</resultMap>