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

发表回复 0

Your email address will not be published.