首页 > 其他分享 >10_一对多处理

10_一对多处理

时间:2022-12-01 19:47:04浏览次数:34  
标签:10 name 处理 private int tid 一对 id select

比如一个老师拥有多个学生,

环境搭建

在mubatis06的基础上重新建mybatis07步骤

  1. 导入依赖

  2. 导入配置文件

  3. 将java下的文件导入

  4. 环境搭建和上次一样

实体类

private  int id;
    private String name;
    //一个老师拥有多个学生
    private List<Student> students;
private  int id;
private String name;
private int tid;

按结果嵌套处理

<!--按结果嵌套查询-->
    <!--未改动之前查不出学生信息-->
    <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=#{tid};
    </select>
    <resultMap id="TeacherStudent" type="Teacher">
        <result property="id" column="tid"/>
        <result property="name" column="tname"/>
        <!-- 如果属性是一个对象,我们用assocation,如果属性是一个集合,我们用collection-->
        <!--javaType是一个指定的属性的类型,集合中的泛型信息,我们使用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="getTeacher2" resultMap="TeacherStudent2">
    select * from mybatis.teacher where id=#{tid}
</select>

<!--本质上还是一个老师-->
<resultMap id="TeacherStudent2" type="Teacher">
    <!--因为返回值类型是集合,所以要是用javaType-->
    <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>

关联-association【多对一】

集合-clooection【一对多】

1.javaType与ofType的区别:

  • javaType用来指定实体类中属性的类型
  • ofType用来指定映射到List或者集合中的pojo类型,泛型中的约束类型

注意点:

  • 保证sql的可读性,尽量保证通俗易懂
  • 注意一对多和多对一中,属性名和字段名的问题
  • 假设问题不好排查错误,可使用日志

标签:10,name,处理,private,int,tid,一对,id,select
From: https://www.cnblogs.com/zzlbk/p/16942463.html

相关文章