MyBatis 支持自动映射吗?如何实现?

MyBatis 支持自动结果集映射。自动映射主要通过结果映射器(ResultMap)实现:

  1. 完全自动映射
<resultMap type="com.itzhimei.User" autoMapping="true"/> 

将自动映射 resultType 指明的类的所有字段。

  1. 局部自动映射
<resultMap type="com.itzhimei.User" autoMapping="partial">
   <id column="id" property="id"/>        
</resultMap>

除了指定的 id 外,其他所有字段都自动映射。

  1. 属性自动映射
<resultMap id="userMap" type="User">
   <result property="*" column="columnName"/>   
</resultMap>

使用 * 通配符,指定自动映射所有属性。

  1. 映射嵌套结果集
<association property="address" javaType="Address" >
   <result  property="*" column="columnName"/>  
</association>

使用 * 自动映射嵌套对象的所有属性。

自动映射的优势是:

  1. 简单快速。无需为每字段编写ResultMap。
  2. 可以在局部指定 ResultMap,部分自动映射。
  3. 适用于属性修改少的结果集。

而手写 ResultMap 的优势是:

  1. 更加明确、严格。
  2. 适用于属性修改多的结果集。
  3. 可以单独定义 ResultMap 起别名,重用。

总的来说,MyBatis 通过自动映射结果集简化了结果集与 Java Bean的映射工作。但手写 ResultMap 仍具有更多的灵活性。