• Mybatis-05


    Mybatis

      在学习完mybatis的配置属性后,我们接下来了解一个最重要最强大的元素:ResultMap,它可以将查询到的复杂数据映射到一个结果集上,这极大的方便了sql语句的书写。

    基本的resultMap

        <resultMap id="用来绑定的id,自定义" type="这个是pojo类">
            <id column="主键的字段名,自取" property="映射到pojo类中的主键属性" jdbcType="字段类型"/>
            <result column="表的字段名,自取" property="映射到pojo类的一个属性" jdbcType="字段类型"/>
            <!-- 一个复杂类型的关联;许多结果将包装成这种类型,用于一对一关系 -->
            <association property="pojo的一个对象属性" javaType="pojo类">
                <id column="关联主键的字段名,自取" property="关联pojo对象的主键属性" jdbcType="字段类型"/>
                <result column="表的字段名,自取" property="关联pojo对象的属性" jdbcType="字段类型"/>
            </association>
            <!-- 一个复杂类型的集合,只能用ofType来定义类型,用于一对多关系 -->
            <collection property="pojo类中的集合属性" ofType="集合中的对象">
                <id column="关联主键的字段名,自取" property="关联pojo对象的主键属性" jdbcType="字段类型"/>
                <result column="表的字段名,自取" property="关联pojo对象的属性" jdbcType="字段类型"/>
            </collection>
        </resultMap>

    当我们面临一个pojo类中,有多个同名不同参数的方法时,可以使用到一个叫constructor的属性。

    Constructor

    官方解释:

      通过修改对象属性的方式,可以满足大多数的数据传输对象(Data Transfer Object, DTO)以及绝大部分领域模型的要求。但有些情况下你想使用不可变类。 一般来说,很少改变或基本不变的包含引用或数据的表,很适合使用不可变类。 构造方法注入允许你在初始化时为类设置属性的值,而不用暴露出公有方法。MyBatis 也支持私有属性和私有 JavaBean 属性来完成注入,但有一些人更青睐于通过构造方法进行注入。 constructor 元素就是为此而生的。

    一个ResulMap对应一个constructor,查看源码,发现两个子元素定义

     再深入查看,发现两个的属性一模一样,唯一不同的是,idArg配置,会被标记为唯一标识符。

     

     

    为了区别arg元素的顺序,官方给了如下的方法解决:

      当你在处理一个带有多个形参的构造方法时,很容易搞乱 arg 元素的顺序。 从版本 3.4.3 开始,可以在指定参数名称的前提下,以任意顺序编写 arg 元素。 为了通过名称来引用构造方法参数,你可以添加 @Param 注解,或者使用 '-parameters' 编译选项并启用 useActualParamName 选项(默认开启)来编译项目。

    ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。

  • 相关阅读:
    怎么知道windows dll是32位还是64位?
    Controlling IntelliSense Through Macros VS2005 sp1 vs2008
    Largeint.lib
    获取设备管理器中显卡
    匿名管道 双向通信 需要两个
    数据库连接方式详细介绍(转载)
    算法复习1(冒泡、快排、折半)
    EXTJS学习方案<一>
    算法复习2(全排序,从M取N个数) *不考虑重复数据
    confluence的安装流程
  • 原文地址:https://www.cnblogs.com/Charles-H/p/Mybatis-05.html
Copyright © 2020-2023  润新知