zoukankan      html  css  js  c++  java
  • MyBatis 中的级联

    MyBatis 的级联分为 3 种。
    1、鉴别器(discriminator):它是根据某些条件决定采用具体实现类级联的方案,比如体检表要根据性别去区分。
    2、一对一(association):比如学生证和学生就是一对一的级联,雇员和工牌也是一种一对一的级联。
    3、一对多(collection):比如班主任和学生就是一种一对多的级联。
    Mybatis没有多对多的级联,因为多对多级联比较复杂,使用困难,而且可以通过两个一对多级联进行替代。

    一对一

    <resultMap id="EmployeeTaskMap" type="com.EmployeeTask">
    <id column="id" property="id"/>
    <result column="emp_id" property="empId"/>
    <association property="task" column="task_id" select="com.mapper.TaskMapper.getTask"/>
    </resultMap>
    

    这样就完成了两张表的映射。雇员任务通过任务编号(task_id)和任务表示关联,这是一个一对一的级联关系,使用 assocition 元素。property 属性代表映射到POJO属性上。select 配置是命名空间 + SQL id 形式,这样便可以指向对应 Mapper 的 SQL。Mybatis 就会通过对应的 SQL 将数据查询回来。column 代表 SQL 的列,用作参数传递给 selec 属性制定的SQL,如果是多个参数,则需要用逗号隔开。

    一对多

      <resultMap id="BaseResultMap" type="net.dowhile.yang.entity.Role">
        <id column="idrole" jdbcType="BIGINT" property="idrole" />
        <result column="rol_name" jdbcType="VARCHAR" property="rolName" />
        <result column="descn" jdbcType="VARCHAR" property="descn" />
      </resultMap>
    
      <resultMap id="lazyLoadRoles" type="net.dowhile.yang.entity.Role" extends="BaseResultMap">
        <collection property="resources" column="idrole" select="net.dowhile.yang.mapper.ResourceMapper.selectResourceByRoleID"/>
      </resultMap>
    

    collection 元素,一对多级联,其 select 元素指向 SQL,将通过 column 制定的 SQL 字段作为参数进行传递,然后将结果返回给角色的 resources 属性。

  • 相关阅读:
    常见时间复杂度及对应关系
    【转载】Locust实现集合点
    curl 查看接口的网络分段响应时间
    python-字符串操作分类小结
    Jquery--1--选择器分类
    【转】linux shell编程实例总结
    随笔分类整理
    linux备忘录-日志档案
    linux备忘录-系统服务daemon
    linux备忘录-程序管理与SELinux
  • 原文地址:https://www.cnblogs.com/dowhile/p/MyBatis-zhong-de-ji-lian.html
Copyright © 2011-2022 走看看