resultType resultMap 的区别?举例说明
时间: 2024-10-17 10:01:45 浏览: 38
MyBatis中关于resultType和resultMap的区别介绍
在MyBatis中,`resultType` 和 `resultMap` 都用于设置SQL查询的结果数据映射,但是它们的作用和使用场景有所不同:
1. **resultType**:
- `resultType` 主要用于一对一或多对一的简单结果集返回。它指定了查询结果的数据类型,即查询结果是一个单一的对象实例。
- 例如:
```xml
<select id="getUserById" resultType="com.example.User">
SELECT * FROM user WHERE id = #{id}
</select>
```
- 当查询结果匹配到一条记录时,MyBatis会创建一个新的User对象,并填充从数据库查询到的数据。
2. **resultMap**:
- `resultMap` 用于处理更复杂的返回结构,特别是当查询结果包含嵌套的对象集合或者是多个字段组合成一个业务对象时。`resultMap`定义了一个对象模型,而实际查询结果会被映射到这个模型上。
- 例如:
```xml
<resultMap id="baseResultMap" type="com.example.BaseObject">
<id property="id" column="id"/>
<result property="name" column="name"/>
</resultMap>
<select id="getComplexData" resultMap="baseResultMap">
SELECT a.id, b.name FROM table_a a JOIN table_b b ON a.id = b.id
</select>
```
- 这里的`baseResultMap`会映射查询结果中的id和name字段到`BaseObject`中的相应属性。
总结来说,`resultType`适合简单的单表查询,而`resultMap`适用于需要处理复杂数据结构的查询。
阅读全文