MyBatis 将 SQL 执行结果封装为目标对象并返回的过程主要通过两种映射形式实现:
1. 基于 ResultMap 的映射:
- ResultMap:在 XML 映射文件中定义了 SQL 查询结果集和 Java 对象之间的映射关系。
示例:
<!-- XML 映射文件 -->
<resultMap id="UserResultMap" type="User">
<id property="id" column="user_id"/>
<result property="username" column="user_name"/>
<!-- 其他映射关系 -->
</resultMap>
<select id="getUser" resultMap="UserResultMap">
SELECT user_id, user_name FROM users WHERE id = #{id}
</select>
- 优点:通过 ResultMap 定义了结果集与对象属性的映射关系,可以进行更灵活的映射配置,适用于复杂的对象结构。
2. 注解方式的映射:
- 使用注解:在方法上直接使用注解进行结果映射。
示例:
// Java 注解方式
@Select("SELECT user_id, user_name FROM users WHERE id = #{id}")
@Results({
@Result(property = "id", column = "user_id"),
@Result(property = "username", column = "user_name")
// 其他映射关系
})
User getUserById(int id);
- 优点:注解方式简单直观,将映射关系直接写在方法上,适用于简单的映射需求。
这两种方式都能将 SQL 查询结果映射到 Java 对象上,通过映射配置,将查询结果集中的列与 Java 对象的属性进行对应,最终返回映射后的对象或对象集合。
Was this helpful?
0 / 0