resultMap 结果映射
resultMap 用于处理数据库列名与 Java 属性名不一致、复杂对象映射等场景。
基础映射
XML
<resultMap id="BaseResultMap" type="com.example.entity.User">
<id column="user_id" property="id"/>
<result column="user_name" property="username"/>
<result column="user_email" property="email"/>
</resultMap>
<select id="selectById" resultMap="BaseResultMap">
SELECT user_id, user_name, user_email FROM user WHERE user_id = #{id}
</select>
| 元素 | 说明 |
|---|---|
| id | 主键映射,提升性能(内部缓存使用) |
| result | 普通列映射 |
| column | 数据库列名 |
| property | Java 属性名 |
继承与复用
XML
<!-- 基础 resultMap -->
<resultMap id="BaseResultMap" type="com.example.entity.User">
<id column="id" property="id"/>
<result column="username" property="username"/>
</resultMap>
<!-- 继承基础 resultMap -->
<resultMap id="ExtendedResultMap" type="com.example.entity.User" extends="BaseResultMap">
<result column="email" property="email"/>
<result column="phone" property="phone"/>
</resultMap>
关联对象映射
XML
<resultMap id="UserWithRoleMap" type="com.example.entity.User">
<id column="id" property="id"/>
<result column="username" property="username"/>
<association property="role" javaType="com.example.entity.Role">
<id column="role_id" property="id"/>
<result column="role_name" property="roleName"/>
</association>
</resultMap>
注意:association 用于一对一关联,collection 用于一对多关联。
要点总结
- resultMap 处理列名与属性名不一致问题
- id 元素用于主键映射,result 用于普通列
- resultMap 可通过 extends 继承复用
- association 用于一对一关联映射
📝 发现内容有误?点击此处直接编辑