结果映射 `<resultMap>` 和 `<result>` 区别是什么?
时间: 2024-10-08 09:19:48 浏览: 28
`<resultMap>` 和 `<result>` 都是 MyBatis 映射文件中用于数据绑定的重要标签,但它们的作用和应用场景略有不同:
1. `<resultMap>`(结果映射):这是一个全局性的定义,它是一个大的容器,用于创建一个完整的对象实例。当你需要从数据库查询中获取多种类型的属性并组装成一个完整的对象时,会用到 `<resultMap>`。例如,如果你有一个用户表和一个订单表,每个用户可以有多条订单,这时就可以定义一个 `<resultMap>` 来映射用户的基本信息以及其对应的订单列表。
```xml
<resultMap id="userWithOrders" type="User">
<id property="id" column="user_id"/>
<result property="name" column="user_name"/>
<association property="orders" javaType="List<Order>" select="selectAllOrdersByUserId"/>
</resultMap>
```
这里的 `<association>` 标签定义了 `orders` 属性是一个关联到 `Order` 类型的列表。
2. `<result>`:这是 `<resultMap>` 的一部分,用于定义单个结果列的映射。当只需要映射查询结果集中的一列数据到 Java 对象的单一属性时,可以直接使用 `<result>`。例如,上面的例子中,`<result property="name" column="user_name"/>` 就是指定了 `name` 属性对应数据库中的 `user_name` 列。
总结来说,`<resultMap>` 更适合处理复杂的数据结构和关联查询,而 `<result>` 则专注于简单的基本属性映射。
阅读全文