在MyBatis中,可以使用嵌套查詢或者嵌套結果映射來實現一對多數據的查詢和封裝。
首先,在mapper文件中定義查詢一的一方的SQL語句,使用嵌套查詢查詢多的一方的數據。例如:
<select id="getOrderById" resultType="Order">
SELECT * FROM orders WHERE id = #{id}
</select>
然后,在mapper文件中定義查詢多的一方的SQL語句,使用嵌套查詢查詢多的一方的數據。例如:
<select id="getOrderItemsByOrderId" resultType="OrderItem">
SELECT * FROM order_items WHERE order_id = #{orderId}
</select>
最后,在mapper文件中使用association和collection標簽進行嵌套查詢和封裝。例如:
<select id="getOrderWithItemsById" resultType="Order">
SELECT * FROM orders WHERE id = #{id}
</select>
<resultMap id="OrderWithItemsResultMap" type="Order">
<association property="orderItems" javaType="java.util.List" column="id" select="getOrderItemsByOrderId"/>
</resultMap>
首先,在mapper文件中定義查詢一的一方的SQL語句,使用嵌套結果映射查詢多的一方的數據。例如:
<select id="getOrderById" resultMap="OrderWithItemsResultMap">
SELECT * FROM orders WHERE id = #{id}
</select>
然后,在mapper文件中定義查詢多的一方的SQL語句,使用嵌套結果映射查詢多的一方的數據。例如:
<select id="getOrderItemsByOrderId" resultMap="OrderItemResultMap">
SELECT * FROM order_items WHERE order_id = #{orderId}
</select>
最后,在mapper文件中使用association和collection標簽進行嵌套結果映射和封裝。例如:
<resultMap id="OrderWithItemsResultMap" type="Order">
<collection property="orderItems" javaType="java.util.List" resultMap="OrderItemResultMap"/>
</resultMap>
以上是兩種常用的方式來實現MyBatis的一對多數據查詢和封裝,具體使用哪種方式可以根據具體情況來選擇。