在 MyBatis 中,可以使用 Collection 的嵌套映射技巧來處理一對多或多對多的關聯關系。下面是一個示例,演示了如何使用 Collection 的嵌套映射技巧來映射一對多關系:
首先,定義兩個實體類,一個是訂單實體 Order,一個是訂單項實體 OrderItem:
public class Order {
private Long id;
private String orderNo;
private List<OrderItem> orderItems;
// getters and setters
}
public class OrderItem {
private Long id;
private Long orderId;
private String itemName;
private Integer quantity;
// getters and setters
}
然后,在 MyBatis 的映射文件中,編寫如下 SQL 查詢語句,使用嵌套查詢的方式實現訂單和訂單項的關聯查詢:
<select id="findOrderById" resultType="Order" parameterType="Long">
SELECT id, order_no
FROM orders
WHERE id = #{id}
</select>
<select id="findOrderItemsByOrderId" resultType="OrderItem" parameterType="Long">
SELECT id, order_id, item_name, quantity
FROM order_items
WHERE order_id = #{orderId}
</select>
最后,在 Order 的映射文件中,使用 Collection 的嵌套映射技巧將訂單項關聯到訂單中:
<resultMap id="OrderResultMap" type="Order">
<id property="id" column="id"/>
<result property="orderNo" column="order_no"/>
<collection property="orderItems" column="id" select="findOrderItemsByOrderId"/>
</resultMap>
這樣,當查詢訂單時,MyBatis 會自動將訂單項查詢出來,并映射到 Order 實體類的 orderItems 屬性中,從而實現了一對多關聯關系的查詢和映射。