mybatis中collection集合标签的使用详解
时间: 2024-05-10 22:15:49 浏览: 108
MyBatis 中的 collection 标签用于处理查询语句返回多条记录时,将多条记录封装到一个集合中。collection 标签只能用于 resultMap 元素中。
在 resultMap 元素中使用 collection 标签,需要指定以下属性:
- property:指定集合类型属性的名称。
- ofType:指定集合类型属性的数据类型。
- resultMap:指定为集合中元素的映射关系。
- select:指定查询语句的 id。
下面是 collection 标签的一个示例:
```xml
<resultMap id="userMap" type="User">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="password" column="password"/>
<collection property="orders" ofType="Order" resultMap="orderMap">
<id property="id" column="id"/>
<result property="userId" column="user_id"/>
<result property="orderNo" column="order_no"/>
<result property="amount" column="amount"/>
</collection>
</resultMap>
<resultMap id="orderMap" type="Order">
<id property="id" column="id"/>
<result property="userId" column="user_id"/>
<result property="orderNo" column="order_no"/>
<result property="amount" column="amount"/>
</resultMap>
```
在上述示例中,我们定义了两个 resultMap,一个是 userMap,另一个是 orderMap。userMap 中使用了 collection 标签,将订单封装到了 User 对象的 orders 属性中。
注意,使用 collection 标签需要指定 ofType 属性,指定集合中元素的数据类型。在上述示例中,orders 是一个 List<Order> 类型的属性,因此我们指定了 ofType 属性为 Order。
同时,在 collection 标签中还可以使用 select 属性,指定查询语句的 id。这个查询语句的返回结果将作为集合的元素。
```xml
<collection property="orders" ofType="Order" select="findOrdersByUserId"/>
```
在上述示例中,我们使用了 select 属性,指定了一个查询语句的 id,这个查询语句的返回结果将作为 orders 集合的元素。
阅读全文