MyBatis的resultType和resultMap区别

resultType和resultMap是在使用 MyBatis 框架时,映射查询结果到对象时使用的两个不同的配置元素。它们的主要区别在于它们如何映射 SQL 查询的结果集到 Java 对象。

1. resultType

  • resultType是一个简单的类型别名或者是一个完全限定的类名。

  • 它用于将查询结果直接映射到一个简单的 Java 对象或者一个 Map 对象。

  • 当使用resultType时,MyBatis会默认按照列名和对象属性名进行映射,如果列名和属性名不一致,需要手动指定映射关系。

  • 适用于简单场景,当结果集直接对应于一个 Java 对象时。

示例:

XML 复制代码
<select id="selectUser" resultType="com.example.User">
     SELECT id, username, password FROM users WHERE id = #{id}
   </select>

2. resultMap

  • resultMap提供了一个更高级的、细粒度的控制,允许定义复杂的映射策略。
  • 它允许为每个列指定一个映射路径,包括嵌套属性和集合属性。
  • resultMap可以用于处理关联查询,将多个表的结果映射到一个对象或者对象的集合中。
  • 它提供了更复杂的映射功能,如集合、继承、嵌套结果等。

示例:

XML 复制代码
<resultMap id="userResultMap" type="com.example.User">
     <id property="id" column="id" />
     <result property="username" column="username" />
     <result property="password" column="password" />
</resultMap>
   <select id="selectUser" resultMap="userResultMap">
     SELECT id, username, password FROM users WHERE id = #{id}
   </select>

总的来说,resultType适用于简单的映射,而 resultMap提供了更复杂的映射能力,适用于需要精细控制结果集映射的场景。

相关推荐
cike_y18 分钟前
Mybatis之作用域(Scope)和生命周期-解决属性名和字段名不一致的问题&ResultMap结果集映射
java·开发语言·数据库·tomcat·mybatis
柒.梧.2 小时前
MyBatis一对一关联查询深度解析:大实体类、SQL99联表、分布式查询实践
分布式·mybatis
Coder_Boy_4 小时前
SpringAI与LangChain4j的智能应用-(理论篇)
人工智能·spring·mybatis·springai·langchain4j
zhoupenghui1684 小时前
项目访问接口时报“MISCONF Redis is configured to save RDB snapshots, ...“错误的解决方案
数据库·redis·mybatis
cike_y12 小时前
Mybatis之解析配置优化
java·开发语言·tomcat·mybatis·安全开发
勇往直前plus15 小时前
MyBatis/MyBatis-Plus类型转换器深度解析:从基础原理到自定义实践
数据库·oracle·mybatis
古城小栈15 小时前
Spring Boot 数据持久化:MyBatis-Plus 分库分表实战指南
spring boot·后端·mybatis
无名-CODING16 小时前
SQL 注入指南
sql·mybatis
shuair1 天前
redis缓存双写
redis·缓存·mybatis
前端程序猿之路1 天前
AI大模型应用之-RAG 全流程
人工智能·python·gpt·语言模型·aigc·mybatis·ai编程