mybatis 一对多 多对一
一对多
@Data @NoArgsConstructor @AllArgsConstructor public class Student { private int id; private String name; private Teacher teacher; } public interface StudentManager { List<Student> getStudent(); List<Student> getStudents(); }
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.mapper.StudentManager"> <select id="getStudent" resultMap="StudentTeacher"> select id,name,tid from student </select> <resultMap id="StudentTeacher" type="student"> <result property="id" column="id"/> <result property="name" column="name"/> <association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/> </resultMap> <select id="getTeacher" resultType="teacher"> select id,name from teacher where id = #{id} </select> <select id="getStudents" resultMap="StudentTeachers"> SELECT s.`id` sid,s.`name` sname,t.`name` tname FROM student s ,teacher t WHERE s.`tid`=t.`id`; </select> <resultMap id="StudentTeachers" type="student"> <result property="id" column="sid"/> <result property="name" column="sname"/> <association property="teacher" javaType="teacher"> <result property="name" column="tname"/> </association> </resultMap> </mapper>
多对一
@Data @NoArgsConstructor @AllArgsConstructor public class Teacher { private int id; private String name; private List<Student> students; } public interface TeacherManager { List<Teacher> getTeacher(int id); List<Teacher> getTeachers(int id); }
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.mapper.TeacherManager"> <select id="getTeacher" resultMap="TeacherStudent"> SELECT s.`id` sid,s.`name` sname,t.`name` tname,t.`id` tid FROM student s ,teacher t WHERE s.`tid`=t.`id` and t.`id`=#{id}; </select> <resultMap id="TeacherStudent" type="teacher"> <result property="id" column="tid"/> <result property="name" column="tname"/> <collection property="students" ofType="student"> <result property="id" column="sid"/> <result property="name" column="sname"/> <result property="tid" column="sid"/> </collection> </resultMap> <select id="getTeachers" resultMap="TeacherStudents"> select id,name from teacher where id=#{tid} </select> <resultMap id="TeacherStudents" type="teacher"> <collection property="students" javaType="ArrayList" ofType="student" select="getTeacherStudents" column="id"/> </resultMap> <select id="getTeacherStudents" resultType="student"> select * from student where tid=#{tid} </select> </mapper>