MyBatis 将 SQL 执行结果封装为目标对象并返回,这一过程主要通过 ResultMap 进行对象映射。ResultMap 是 MyBatis 中用来定义如何封装查询结果的规则。
映射形式:
- 基本映射(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>
- 关联映射(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>
- 集合映射(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>
映射原理:
- 解析映射配置: MyBatis 在解析 Mapper XML 文件时会解析 ResultMap 配置,根据配置规则获取数据库查询结果中的字段名和对应 Java 对象的属性。
-
映射处理: 当执行查询语句并获取到结果集时,MyBatis 根据 ResultMap 的配置信息将查询结果映射到对应的 Java 对象中。
-
对象封装: 根据 ResultMap 中的配置规则,MyBatis 将查询结果中的字段值逐一映射到 Java 对象的属性中,并返回封装后的 Java 对象或集合。
ResultMap 提供了灵活的映射配置,可以根据实际情况将查询结果封装为不同结构的 Java 对象,适应各种复杂的查询需求,并提供了一对一、一对多、多对多等多种映射形式来满足不同的关系映射需求。
Was this helpful?
0 / 0