• 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

  • 相关阅读:
    行业观察(五)| 服装零售企业数字化升级要“落地有数”
    奇点云 x 阿里云 | 联合发布综合体数字化转型与数据创新解决方案
    StartDT_AI_Lab | 开启“数据+算法”定义的新世界
    奇点云数据中台技术汇(六)| 智能算法助力企业效率升级
    从《长安十二时辰》看企业中台战略
    django1.9版本数据库建立
    django中html文件的配置
    python的django建立项目
    python 读取excel表格的数据
    python创建excel表格比并存入数据
  • 原文地址:https://www.cnblogs.com/InternetJava/p/12543184.html
Copyright © 2020-2023  润新知