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>

 

posted @ 2020-11-29 14:39  享受折腾  阅读(106)  评论(0编辑  收藏  举报