7.一对多的问题

pojo

@Data
public class Student {
    private int id;
    private String name;
    //以下属性用于一对多
    private int tid;
}

@Data
public class Teacher {
    private int id;
    private String name;
    //以下属性为了一对多
    private List<Student> students;
}

方法一(推荐):

<select id="getTeacherStudentList" 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=#{tid}
</select>
    <resultMap id="TeacherStudent" type="Teacher">
        <result property="id" column="tid"/>
        <result property="name" column="tname"/>
<!--复杂的属性 集合中的泛型信息,使用ofType获取-->
        <collection property="students" ofType="Student">
            <result property="id" column="sid"/>
            <result property="name" column="sname"/>
            <result property="tid" column="tid"/>
        </collection>
    </resultMap>

方法二:

<!--子查询方式-->
    <select id="getTeacherStudentList2" resultMap="TeacherStudent2">
        select * from mybatis.teacher where id=#{tid}
    </select>
    <resultMap id="TeacherStudent2" type="Teacher">
        <collection property="students" javaType="ArrayList" ofType="Student" select="getStudentByTeacherID" column="id"/>
    </resultMap>
    <select id="getStudentByTeacherID" resultType="Student">
        select * from student where tid=#{tid}
    </select>
</mapper>

 

posted @ 2021-06-07 11:54  一拳超人的逆袭  阅读(33)  评论(0编辑  收藏  举报