多对一处理

时间:2022-08-10
本文章向大家介绍多对一处理,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
  • 按照查询嵌套处理
点击查看代码
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kuang.dao.StudentMapper">
<!--
 思路:
 1.查询出所有学生信息
 2.根据查询出来的tid,寻找对应的老师
 -->

    <select id="getStudent" resultMap="StudentTeacher">
        select * from student
    </select>
    
    <resultMap id="StudentTeacher" type="Student">
        <result property="id" column="id"/>
        <result property="name" column="name"/>
<!--    复杂对象需要单独处理 对象:association 集合 :collection -->
        <association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/>
    </resultMap>

    
    <select id="getTeacher" resultType="Teacher">
        select * from teacher where id=#{id}
    </select>

</mapper>

  • 按照结果嵌套处理
   <select id="getStudent2" resultMap="StudentTeacher2">
     select s.id sid, s.name sname, t.name tname
     from student s, teacher t
     where s.tid = t.id

        
    </select>
    <resultMap id="StudentTeacher2" type="Student">
        <result property="id" column="sid"/>
        <result property="name" column="sname"/>
        <association property="teacher" javaType="Teacher">
            <result property="name" column="tname"/>
        </association>
    </resultMap>



按照结果嵌套处理

 <select id="getTeacher" resultMap="TeacherStudent">
        select s.id sid, s.name sname, t.id tid , t.name 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 property="name" column="tname"/>
        
        <collection property="students" ofType="Student">
            <result property="id" column="sid"/>
            <result property="name" column="sname"/>
            <result property="tid" column="tid"/>
        </collection>
    </resultMap>

按照查询嵌套处理

<select id="getTeacher2" 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 mybatis.student where tid =#{tid};
</select>



原文地址:https://www.cnblogs.com/ahhh7931/p/16558257.html