MyBatis 支持自动结果集映射。自动映射主要通过结果映射器(ResultMap)实现:
- 完全自动映射
<resultMap type="com.itzhimei.User" autoMapping="true"/>
将自动映射 resultType 指明的类的所有字段。
- 局部自动映射
<resultMap type="com.itzhimei.User" autoMapping="partial">
<id column="id" property="id"/>
</resultMap>
除了指定的 id 外,其他所有字段都自动映射。
- 属性自动映射
<resultMap id="userMap" type="User">
<result property="*" column="columnName"/>
</resultMap>
使用 * 通配符,指定自动映射所有属性。
- 映射嵌套结果集
<association property="address" javaType="Address" >
<result property="*" column="columnName"/>
</association>
使用 * 自动映射嵌套对象的所有属性。
自动映射的优势是:
- 简单快速。无需为每字段编写ResultMap。
- 可以在局部指定 ResultMap,部分自动映射。
- 适用于属性修改少的结果集。
而手写 ResultMap 的优势是:
- 更加明确、严格。
- 适用于属性修改多的结果集。
- 可以单独定义 ResultMap 起别名,重用。
总的来说,MyBatis 通过自动映射结果集简化了结果集与 Java Bean的映射工作。但手写 ResultMap 仍具有更多的灵活性。