myBatis学习笔记(5)——一对多关联表查询

来源:互联网 发布:乐视电视mac地址 编辑:程序博客网 时间:2024/05/17 03:18

需求

上一篇笔记是一对一,一个学生对应一个老师,本次我们修改一下需求,一个老师有多个学生
参考:myBatis学习笔记(4)——一对一关联表查询
老师类:

package com.bank.entities;import java.util.List;public class Teacher {    private int teacherId;    private String teacherName;    private List<Student> stuList;    public List<Student> getStuList() {        return stuList;    }    public void setStuList(List<Student> stuList) {        this.stuList = stuList;    }    public int getTeacherId() {        return teacherId;    }    public void setTeacherId(int teacherId) {        this.teacherId = teacherId;    }    public String getTeacherName() {        return teacherName;    }    public void setTeacherName(String teacherName) {        this.teacherName = teacherName;    }    @Override    public String toString() {        return "Teacher [teacherId=" + teacherId + ", teacherName="                + teacherName + ", stuList=" + stuList + "]";    }}

方法一

与上一个笔记,有两种方法,套路都是一样的,直接看代码,不多解释

    <!-- 方法一  -->    <resultMap type="Teacher" id="teacherResultMap1">        <id property="teacherId" column="teacher_id" />        <result property="teacherName" column="teacher_name" />        <!-- collection 是用来处理一对多关系的结果映射 -->        <collection property="stuList" ofType="Student">            <id property="stuId" column="stu_id" />            <result property="stuName" column="stu_name" />        </collection>    </resultMap>    <select id="getTeacher" parameterType="int" resultMap="teacherResultMap1">        select * from student s,teacher t         where             s.teacher_id = t.teacher_id         and t.teacher_id = #{id}    </select>

跟一对一不同的主要是用了collection 标签,ofType 属性表示该集合内元素的类型

方法二

<!-- 方法二  -->    <select id="getTeacher2" parameterType="int" resultMap="teacherResultMap2">        select teacher_id teacherId,teacher_name teacherName from teacher where teacher_id=#{id}    </select>    <select id="getStudents" parameterType="int" resultType="Student">        select stu_id stuId,stu_name stuName,teacher_id teacherId from student where teacher_id=#{id}    </select>    <resultMap type="Teacher" id="teacherResultMap2">        <id property="teacherId" column="teacher_id" />        <result property="teacherName" column="teacher_name" />        <!-- association是用来处理一对多关系的结果映射 -->        <collection property="stuList" column="teacherId" select="getStudents">        </collection>    </resultMap>
0 0
原创粉丝点击