4.Mybatis一对多查询

    科技2022-07-11  90

    Teacher类与Student类为一对多关系,现希望根据id查找某个老师信息以及老师所教授的所有的学生的信息,此时学生信息是一个List对象,现使用mybatis实现 Teacher.class

    package com.xzf.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.List; @Data @AllArgsConstructor @NoArgsConstructor public class Teacher { private int id; private String name; private List<Student> student; }

    Student.class

    package com.xzf.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class Student { private int id; private String name; private int tid; }

    TeacherMapper.class

    package com.xzf.dao; import com.xzf.pojo.Teacher; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; public interface TeacherMapper { //获取指定老师及老师的学生信息 Teacher getTeacherById(@Param("tid") int id); }

    TeacherMapper.xml

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.xzf.dao.TeacherMapper"> <select id="getTeacherById" resultMap="TeacherStudent"> SELECT s.id as sid, s.name as sname, t.id as tid, t.name as tname from student s, teacher t where s.tid = t.id and t.id = #{tid} </select> <resultMap id="TeacherStudent" type="Teacher"> <result property="id" column="tid"></result> <result property="name" column="tname"></result> <!--集合中的泛型使用ofType取--> <collection property="student" ofType="Student"> <result property="name" column="sname"></result> <result property="id" column="sid"></result> </collection> </resultMap> </mapper>

    测试类

    import com.xzf.dao.StudentMapper; import com.xzf.dao.TeacherMapper; import com.xzf.pojo.Student; import com.xzf.pojo.Teacher; import com.xzf.utils.MybatisUtil; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import java.util.List; public class UserMapperTest { SqlSession sqlSession = MybatisUtil.getSqlSession(); @Test public void test2(){ TeacherMapper teacherMapper = sqlSession.getMapper(TeacherMapper.class); Teacher teacher = teacherMapper.getTeacherById(1); System.out.println(teacher); } }

    查询结果

    Processed: 0.027, SQL: 8