<collection select>
时间: 2024-06-09 08:03:12 浏览: 124
<collection select> 是 MyBatis 提供的一种高级查询功能,它可以将查询结果映射为一个集合类型的对象,如 List、Set、Map 等。在查询时,我们可以指定一个查询语句和一个集合类型的属性来执行 <collection select> 标签,MyBatis 会自动执行查询语句并将结果集合映射到指定属性上。
例如,我们可以使用 <collection select> 标签来实现在查询订单时同时查询订单对应的所有订单项。具体使用方法可以参考以下示例:
```
<resultMap id="OrderResultMap" type="Order">
<id property="id" column="order_id"/>
<result property="orderNo" column="order_no"/>
<!-- 将订单项映射到 items 属性上 -->
<collection property="items" ofType="OrderItem">
<id property="id" column="item_id"/>
<result property="name" column="item_name"/>
<result property="price" column="item_price"/>
</collection>
</resultMap>
<select id="getOrderWithItems" resultMap="OrderResultMap">
SELECT
o.id as order_id,
o.order_no,
i.id as item_id,
i.name as item_name,
i.price as item_price
FROM orders o
LEFT JOIN order_items i ON o.id = i.order_id
WHERE o.id = #{orderId}
</select>
```
以上示例中,我们定义了一个 Order 对象和一个 OrderItem 对象,使用 <collection select> 标签将查询结果映射到 Order 对象的 items 属性上。在查询语句中,我们使用了左连接和 WHERE 子句来限定只查询指定订单对应的订单项。
阅读全文