MyBatis 将 SQL 执行结果封装为目标对象并返回,这一过程主要通过 ResultMap 进行对象映射。ResultMap 是 MyBatis 中用来定义如何封装查询结果的规则。

映射形式:

  1. 基本映射(Basic Mapping): 将 SQL 查询的结果直接映射到 Java 对象的属性上。

    示例:

    <resultMap id="userResult" type="User">
       <id property="id" column="user_id" />
       <result property="username" column="user_name" />
       <result property="email" column="user_email" />
    </resultMap>
    
  2. 关联映射(Association Mapping): 将多个查询结果关联到一个对象中,通常用于处理一对一关系。

    示例:

    <resultMap id="blogResult" type="Blog">
       <id property="id" column="blog_id"/>
       <result property="title" column="blog_title"/>
       <!-- 关联查询 -->
       <association property="author" column="author_id" javaType="Author" select="selectAuthor"/>
    </resultMap>
    
  3. 集合映射(Collection Mapping): 将多个查询结果映射到一个集合属性中,通常用于处理一对多或多对多关系。

    示例:

    <resultMap id="blogResult" type="Blog">
       <id property="id" column="blog_id"/>
       <result property="title" column="blog_title"/>
       <!-- 集合映射 -->
       <collection property="posts" ofType="Post" column="blog_id" select="selectPostsForBlog"/>
    </resultMap>
    

映射原理:

  1. 解析映射配置: MyBatis 在解析 Mapper XML 文件时会解析 ResultMap 配置,根据配置规则获取数据库查询结果中的字段名和对应 Java 对象的属性。

  2. 映射处理: 当执行查询语句并获取到结果集时,MyBatis 根据 ResultMap 的配置信息将查询结果映射到对应的 Java 对象中。

  3. 对象封装: 根据 ResultMap 中的配置规则,MyBatis 将查询结果中的字段值逐一映射到 Java 对象的属性中,并返回封装后的 Java 对象或集合。

ResultMap 提供了灵活的映射配置,可以根据实际情况将查询结果封装为不同结构的 Java 对象,适应各种复杂的查询需求,并提供了一对一、一对多、多对多等多种映射形式来满足不同的关系映射需求。

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.