映射结果集
在 Mapper 文件中映射查询结果可以使用 <resultMap> 或 <entity>,区别是:
- <resultMap>,标签适用于对 SQL 查询结果的映射。
- <entity>,适用于对一个具体表的映射。
resultMap 和 entity 如何选择?
<resultMap> 标签
定义和使用 resultMap
<resultMap id="user_resultMap" type="com.example.dto.UserBean">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
<result column="create_time" property="createTime"/>
</resultMap>
<select id="queryById" resultMap="user_resultMap">
select
id, name, age, create_time
from
users
where
id = #{id}
</select>
标签属性
<resultMap> 标签
属性名 | 描述 |
---|---|
id | 可选 如果为空那么将会以 type 属性为替代。主要是用于标识。 |
type | 必选 类型全名,用于决定映射到的具体类型。 |
caseInsensitive | 可选 在处理映射列名和属性名时是否对大小写不敏感,默认是 true 不敏感。对于某些数据库查询结果始终返回大写,利用这个功能可以方便的映射到属性上。 |
autoMapping | 可选 用于决定是否进行 自动映射。默认是 true 自动映射。 |
mapUnderscoreToCamelCase | 可选 配合 autoMapping 使用,用于决定属性名在映射到列名时,是否按照驼峰命名法转换为下划线命名法,例如:属性名 createTime 被转换为 create_time 。默认 false 不转换 |
<result> 标签
属性名 | 描述 |
---|---|
column | 必选 查询结果的列名。 |
property | 必选 映射类型的属性名。 |
javaType | 可选 通常会自动识别类型,除非属性是一个抽象类或者接口,则需要配置具体的实现类。 |
jdbcType | 可选 默认按照 Java 和 JDBC 类型关系 进行映射,可通过该属性来强制指定 jdbcType。 |
typeHandler | 可选 根据 类型处理器 所描述的优先级进行查找,可通过该属性强制指定一个具体的 typeHandler。 |