Mybatis关联查询之二

Mybatis关联查询之多对多

多对多

一、entity实体类

public class Student {
    private Integer stuid;
    private String stuname;
    private String stuaddress;

    //植入一个Teacher集合,代表一名学员可以被多名教员教课
    private List<Teacher> teachers;

    public Integer getStuid() {
        return stuid;
    }

    public void setStuid(Integer stuid) {
        this.stuid = stuid;
    }

    public String getStuname() {
        return stuname;
    }

    public void setStuname(String stuname) {
        this.stuname = stuname;
    }

    public String getStuaddress() {
        return stuaddress;
    }

    public void setStuaddress(String stuaddress) {
        this.stuaddress = stuaddress;
    }

    public List<Teacher> getTeachers() {
        return teachers;
    }

    public void setTeachers(List<Teacher> teachers) {
        this.teachers = teachers;
    }
}
public class Teacher {
    private Integer tid;
    private String tname;

    //植入学员集合,代表一名教员授课多名学生
    private List<Student> students;

    public Integer getTid() {
        return tid;
    }

    public void setTid(Integer tid) {
        this.tid = tid;
    }

    public String getTname() {
        return tname;
    }

    public void setTname(String tname) {
        this.tname = tname;
    }

    public List<Student> getStudents() {
        return students;
    }

    public void setStudents(List<Student> students) {
        this.students = students;
    }
}

二、dao层

//多对多  查询所有学生信息 以及授课老师
    public List<Student> getStudentInfo();

三、dao.xml小配置

<!--多对多-->
    <resultMap id="studentAndTeacher" type="com.marketsys.entity.Student">
        <id column="stuid" property="stuid"/>
        <collection property="teachers" ofType="com.marketsys.entity.Teacher">
            <id column="tid" property="tid"/>
        </collection>
    </resultMap>
    <select id="getStudentInfo" resultMap="studentAndTeacher">
        select * from student,teacher,stu_t where student.stuid=stu_t.stuid and teacher.tid=stu_t.tid
    </select>

四、test测试类


SqlSession sqlSession= MybatisUtil.getSqlSession();
URoleTestDao mapper=sqlSession.getMapper(URoleTestDao.class);

//
多对多 @Test public void test3(){ List<Student> studentInfo = mapper.getStudentInfo(); for (Student stu:studentInfo) { System.out.println("学生:"+stu.getStuname()); for (Teacher teacher:stu.getTeachers()) { System.out.print(" 教员:"+teacher.getTname()); } } }
原文地址:https://www.cnblogs.com/Zzzzn/p/11662773.html