zoukankan      html  css  js  c++  java
  • Mybatis对象关系映射 one2one,one2many,many2many

    MyBatis中的高级映射一般要借助select元素中的resultMap属性进行实现,通过此属性配置实现一对一,一对多等关系映射的实现

    一对一映射:association
    一对多映射:collection
    解释:服务层调用一次mapper的接口,完成多个表的数据封装在一个值对象中。这个值对象一般包括直接调用的mapper接口对应的表字段属性,其他表字段的对象,其他表字段的集合等等。

    服务层直接调用findOrderById,mybatis帮助我们实现了findOrderShipping和findOrderItems的自动查询封装

        <select id="findOrderById" resultMap="orderRM">
       		select * from `order` where orderid = #{orderid}
       </select>
    
        <resultMap type="entity.Order" id="orderRM" autoMapping="true">
            <id column="orderid" property="orderid"/>
            <association property="shipping" javaType="entity.Shipping" column="orderid" select="findOrderShipping"/>
            <collection property="orderitems" ofType="entity.Orderitem"
                        column="orderid" select="findOrderItems"></collection>
        </resultMap>
    
    
        <select id="findOrderShipping" resultType="entity.Shipping">
       		select * from shipping where orderid = #{orderid}
       </select>
    
        <select id="findOrderItems" resultType="entity.Orderitem">
       		select * from orderitem where orderid =#{orderid}
       </select>
    

    结果映射(resultMap)
    constructor - 用于在实例化类时,注入结果到构造方法中
    idArg - ID 参数;标记出作为 ID 的结果可以帮助提高整体性能
    arg - 将被注入到构造方法的一个普通结果
    id – 一个 ID 结果;标记出作为 ID 的结果可以帮助提高整体性能
    result – 注入到字段或 JavaBean 属性的普通结果
    association – 一个复杂类型的关联;许多结果将包装成这种类型
    嵌套结果映射 – 关联可以是 resultMap 元素,或是对其它结果映射的引用
    collection – 一个复杂类型的集合
    嵌套结果映射 – 集合可以是 resultMap 元素,或是对其它结果映射的引用
    discriminator – 使用结果值来决定使用哪个 resultMap
    case – 基于某些值的结果映射
    嵌套结果映射 – case 也是一个结果映射,因此具有相同的结构和元素;或者引用其它的结果映射

    ResultMap 的属性列表
    属性 描述
    id 当前命名空间中的一个唯一标识,用于标识一个结果映射。
    type 类的完全限定名, 或者一个类型别名(关于内置的类型别名,可以参考上面的表格)。
    autoMapping 如果设置这个属性,MyBatis 将会为本结果映射开启或者关闭自动映射。 这个属性会覆盖全局的属性 autoMappingBehavior。默认值:未设置(unset)。

    学习参考:
    https://www.cnblogs.com/binaway/p/9171587.html
    https://blog.csdn.net/qq_22172133/article/details/81290718
    https://www.cnblogs.com/zhaopengcheng/p/7094880.html

  • 相关阅读:
    Cognos11第三方权限认证之OpenDJ
    Sqlserver 2008 R2安装的盘符空间不够用的解决办法
    Cognos11中通过URL访问report的设置
    Cognos11中关于CJAP第三方认证的相关配置
    Cognos11中报XQE-JDB-0004查找驱动程序类错误
    项目管理半开源工具备份和恢复
    CentOS7.4 安装rabbitmq-3.7.x
    Spring Cloud Zuul的一个坑
    题五:10行杨辉三角
    题四:一对兔子生兔子,给个月份算有几只兔子
  • 原文地址:https://www.cnblogs.com/InternetJava/p/12543184.html
Copyright © 2011-2022 走看看