如果 sql 查询到的字段与 pojo 的属性名不一致,则需要使用 resultMap。
时间: 2024-09-19 21:09:53 浏览: 47
MyBatis中resultMap和resultType的区别详解
5星 · 资源好评率100%
当 SQL 查询的结果集中包含的字段名称与 Java 对象 (POJO) 中的属性名称不匹配时,通常会使用 MyBatis 框架中的 resultMap 元素。resultMap 是一种配置机制,它允许你在映射文件中定义一个一对一或多对一的关系,将数据库表中的列映射到 POJO 的属性上。
例如,如果你有一个用户表 User,其结构有字段 ID 和 Name,而你的 User POJO 类只定义了 name 属性,这时查询结果包含了 id 字段,就不能直接通过 @Column 注解映射。在这种情况下,你需要创建一个 resultMap,指定 "id" 映射到 User 类的 "id" 或者 "getId()" 方法,"name" 映射到 "name" 属性:
```xml
<resultMap id="UserResultMap" type="com.example.User">
<id property="id" column="ID"/>
<result property="name" column="NAME"/>
</resultMap>
<select id="getUserById" resultMap="UserResultMap">
SELECT * FROM user WHERE id = #{id}
</select>
```
这样,在执行 `getUserById` 查询时,MyBatis 就可以根据 resultMap 自动处理转换,避免手动编写大量的 setter 方法。
阅读全文