MyBatis支持一對多關系的映射配置可以通過使用resultMap元素來實現。下面是一個示例配置:
首先,需要在mapper.xml文件中定義一個resultMap元素,用于映射一對多關系。在resultMap元素中,可以使用collection元素來定義關聯的多個對象。
<resultMap id="orderItemResultMap" type="Order">
<id property="id" column="order_id"/>
<result property="total" column="order_total"/>
<result property="items" column="order_id" javaType="java.util.List" ofType="OrderItem"
select="selectOrderItemsByOrderId"/>
</resultMap>
<resultMap id="orderItemResultMap" type="OrderItem">
<id property="id" column="item_id"/>
<result property="name" column="item_name"/>
<result property="price" column="item_price"/>
</resultMap>
在上面的示例中,我們定義了兩個resultMap元素,分別用于映射Order和OrderItem對象。
然后,需要在mapper.xml文件中定義一個select元素,用于查詢訂單及其對應的訂單項。
<select id="selectOrderItemsByOrderId" resultMap="orderItemResultMap">
SELECT *
FROM order_items
WHERE order_id = #{orderId}
</select>
在上面的示例中,我們通過select元素定義了一個查詢,通過orderId參數查詢訂單項。
最后,需要在mapper接口中定義一個方法,用于執行查詢操作。
public interface OrderMapper {
Order selectOrderById(int id);
}
在上面的示例中,我們定義了一個selectOrderById方法,用于查詢訂單及其對應的訂單項。
通過上述配置和代碼,就可以實現MyBatis的一對多映射配置。在查詢訂單時,MyBatis會自動查詢訂單項,并將其關聯到訂單對象中的items屬性中。