在MyBatis中使用Collection映射復雜數據類型可以通過使用resultMap和association標簽來實現。下面是一個示例:
假設有一個Order類和一個Product類,Order類中包含一個List類型的products屬性:
public class Order {
private int id;
private List<Product> products;
// getters and setters
}
public class Product {
private int id;
private String name;
// getters and setters
}
在MyBatis的映射文件中,可以通過resultMap來定義如何映射這兩個類之間的關系:
<resultMap id="orderResultMap" type="Order">
<id property="id" column="order_id"/>
<collection property="products" ofType="Product">
<id property="id" column="product_id"/>
<result property="name" column="product_name"/>
</collection>
</resultMap>
在查詢語句中使用這個resultMap來獲取Order對象及其關聯的Product對象:
<select id="getOrder" resultMap="orderResultMap">
SELECT o.id as order_id, p.id as product_id, p.name as product_name
FROM orders o
JOIN order_products op ON o.id = op.order_id
JOIN products p ON op.product_id = p.id
WHERE o.id = #{orderId}
</select>
這樣就可以在MyBatis中使用Collection映射復雜數據類型了。當查詢結果中包含多個Product對象時,這些Product對象會被映射到Order對象的products屬性中。