MyBatis支持一對多關(guān)系的映射配置可以通過使用resultMap元素來實(shí)現(xiàn)。下面是一個(gè)示例配置:
首先,需要在mapper.xml文件中定義一個(gè)resultMap元素,用于映射一對多關(guān)系。在resultMap元素中,可以使用collection元素來定義關(guān)聯(lián)的多個(gè)對象。
<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>
在上面的示例中,我們定義了兩個(gè)resultMap元素,分別用于映射Order和OrderItem對象。
然后,需要在mapper.xml文件中定義一個(gè)select元素,用于查詢訂單及其對應(yīng)的訂單項(xiàng)。
<select id="selectOrderItemsByOrderId" resultMap="orderItemResultMap">
SELECT *
FROM order_items
WHERE order_id = #{orderId}
</select>
在上面的示例中,我們通過select元素定義了一個(gè)查詢,通過orderId參數(shù)查詢訂單項(xiàng)。
最后,需要在mapper接口中定義一個(gè)方法,用于執(zhí)行查詢操作。
public interface OrderMapper {
Order selectOrderById(int id);
}
在上面的示例中,我們定義了一個(gè)selectOrderById方法,用于查詢訂單及其對應(yīng)的訂單項(xiàng)。
通過上述配置和代碼,就可以實(shí)現(xiàn)MyBatis的一對多映射配置。在查詢訂單時(shí),MyBatis會(huì)自動(dòng)查詢訂單項(xiàng),并將其關(guān)聯(lián)到訂單對象中的items屬性中。