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提供了更复杂的映射能力,适用于需要精细控制结果集映射的场景。

相关推荐
亓才孓1 天前
【Exception】CONDITIONS EVALUATION REPORT条件评估报告
java·开发语言·mybatis
树码小子1 天前
图书管理系统(2)图书列表接口
spring boot·mybatis·图书管理系统
tuokuac1 天前
MyBatis-Plus调用getEntity()触发异常
java·mybatis
亓才孓2 天前
【SQLSyntaxErrorException】SQL语法错误
数据库·sql·mybatis
亓才孓2 天前
【MyBatis Exception】SQLSyntaxErrorException(按批修改不加配置会报错)
java·开发语言·mybatis
亓才孓2 天前
【MyBatis Runtime Exception】自动驼峰映射对Map不生效,应该在查询中起别名
java·windows·mybatis
亓才孓2 天前
【MyBatis Plus】MyBatis Plus框架
mybatis
树码小子2 天前
图书管理系统(3)修改图书接口
spring boot·mybatis·图书管理系统
亓才孓2 天前
【MyBatis Exception】Public Key Retrieval is not allowed
java·数据库·spring boot·mybatis
Hx_Ma162 天前
测试题(六)
java·tomcat·mybatis