Mybatis-lesson09-多对一查询 (查询所有的学生及对应的老师信息)-03-12

在StudentMapper.xml 需要使用复杂查询的方法,

1、先单独查学生和单独查老师

2、在中间使用结果映射  学生中reultMap ="StudentTeacher"

3、中间增加结果映射 resultMap id ="StudentTeacher" type="Student" 还是学生,只是需要通过tid查询到对应的老师

<!--复杂属性要单独处理
    对象:association  在一个表中查询另外一张表,在sql中就叫子查询
    集合:collection-->
<association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/>

第一步:不一样的内容是第三个属性,在学生类中为teacher, 所以:property = "teacher" 在数据库中列名为:column="tid" .

第二步:但学生类中的teacher属性需要在里面说明它为什么类  增加参数:javaType = "Teacher" 类 (注意首字母,大写为类名)

第三步:需要通过对应的tid值,对老师类进行子查询 select=“getTeacher” 获得老师信息。查询出来的结果,老师以对象的形式体现

----输出结果------------------------------------------------------------------------------------

Student(id=1, name=小明, teacher=Teacher(id=1, name=秦老师))
Student(id=2, name=小红, teacher=Teacher(id=1, name=秦老师))
Student(id=3, name=小张, teacher=Teacher(id=1, name=秦老师))
Student(id=4, name=小李, teacher=Teacher(id=1, name=秦老师))
Student(id=5, name=小王, teacher=Teacher(id=1, name=秦老师))

--------------------------------------------------------------------------------------------------

public void testStudent(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
    List<Student> studentList = mapper.getStudent();
    for (Student student : studentList) {
        System.out.println(student);
    }
    sqlSession.close();
}
 
posted @ 2023-03-12 21:47  Rui2022  阅读(78)  评论(0编辑  收藏  举报