zoukankan      html  css  js  c++  java
  • MyBatis之多对一关系

    MyBatis之多对一和一对多

    多对一理解

    多对一理解起来就是多张表中的数据对应一个数据,比如Student表中多个学生对应Teacher表中的一位老师。(这里指的是学校里上课的老师)通俗理解就是一个老师可以教多个学生

    MyBatis中在处理多对一的sql语句方式有两种,一种是以子查询的方式,另一种是联表查询

    • 子查询sql语句简单,但是映射关系相对复杂

      • 下面是在MyBatis中StudentMapper.xml用子查询方式进行多对一查询

        <mapper namespace="com.wcz.dao.StudentMapper">   //命名空间
        <select id="getStudent" resultMap="StudentTeacher">  //结果集反射器
           select * from  mybatis.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 * from mybatis.teacher where id=#{tid};
           </select>
        
        • 如上可见,子查询的sql语句简单,但是映射代码逻辑增加
    • 联表查询多对一关系是最常用的,也是我最喜欢的,和子查询不同的是,sql语句复杂,但是映射关系逻辑简单,思路清晰

      • 下面是在MyBatis中StudentMapper.xml下配置的联表查询操作

        • <mapper namespace="com.wcz.dao.StudentMapper">   //命名空间
          <select id="getStudent2" resultMap="StudentTeacher2">
                  select  s.id sid,s.name sname,t.name tname,t.pwd  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" column="tid"  javaType="Teacher">
                      <result property="name" column="tname"/>
                      <result property="pwd" column="pwd" />
                  </association>
              </resultMap>
          
          • 熟练这两种方式
  • 相关阅读:
    python基础-函数递归
    JS中变量、作用域的本质,定义及使用方法
    JS数据类型和堆栈+变量比较和值的复制+参数传递和类型检测
    宣传页项目开发(三)
    宣传页项目开发(二)
    宣传页项目实战
    CSS Sprite雪碧图应用
    PS切图工具
    根据js轮播图原理写出合理的结构与样式、并实现js交互效果
    JS事件流、DOM事件流、IE事件处理、跨浏览器事件处理、事件对象与类型
  • 原文地址:https://www.cnblogs.com/myblogswcz/p/12623928.html
Copyright © 2011-2022 走看看