1. Result Maps
    1. 幕后创建ResultMap
      1. <!-- In mybatis-config.xml file --> <typeAlias type="com.someapp.model.User" alias="User"/> <!-- In SQL Mapping XML file --> <select id="selectUsers" resultType="User"> select id, username, hashedPassword from some_table where id = #{id} </select>
      2. 说明
        1. 这些情况下,MyBatis 会在幕后自动创建一个 ResultMap,基于属性名来映射列到 JavaBean 的属性上。
      3. 注意
        1. 如果列名没有精确匹配,你可以在列名上使用 select 字句的别名(一个 基本的 SQL 特性)来匹配标签
        2. <select id="selectUsers" resultType="User"> select user_id as "id", user_name as "userName", hashed_password as "hashedPassword" from some_table where id = #{id} </select>
    2. 外部创建ResultMap
      1. <resultMap id="userResultMap" type="User"> <id property="id" column="user_id" /> <result property="username" column="user_name"/> <result property="password" column="hashed_password"/> </resultMap>
      2. <select id="selectUsers" resultMap="userResultMap"> select user_id, user_name, hashed_password from some_table where id = #{id} </select>
    3. 以上是解决列名不匹配的两种方式
  2. 高级结果映射
    1. 例子
    2. resultMap 元素
      1. 属性
        1. id
          1. 当前命名空间中的一个唯一标识,用于标识一个result map.
        2. type
          1. 类的全限定名, 或者一个类型别名 (内置的别名可以参考上面的表格).
        3. autoMapping
          1. 如果设置这个属性,MyBatis将会为这个ResultMap开启或者关闭自动映射。这个属性会覆盖全局的属性autoMappingBehavior。默认值为:unset。
  3. resultMap子元素概念视图
    1. constructor - 类在实例化时,用来注入结果到构造方法中
      1. idArg - ID 参数;标记结果作为 ID 可以帮助提高整体效能
      2. arg - 注入到构造方法的一个普通结果
    2. id – 一个 ID 结果;标记结果作为 ID 可以帮助提高整体效能
    3. result – 注入到字段或 JavaBean 属性的普通结果
    4. association – 一个复杂的类型关联;许多结果将包成这种类型
      1. 嵌入结果映射 – 结果映射自身的关联,或者参考一个
    5. collection – 复杂类型的集
      1. 嵌入结果映射 – 结果映射自身的集,或者参考一个
    6. discriminator – 使用结果值来决定使用哪个结果映射
      1. case – 基于某些值的结果映射
        1. 嵌入结果映射 – 这种情形结果也映射它本身,因此可以包含很多相 同的元素,或者它可以参照一个外部的结果映射。