一對多查詢
示例:<resultMaptype="cn..po.Orders"id="userorderdetailmap">
<id property="id"column="id"/>
<result property="user_id"column="user_id"/>
<result property="number"column="number"/>
<association property="user"javaType="cn.itcast.mybatis.po.User">
<id property="id"column="user_id"/>
<result property="username"column="username"/>
<result property="address"column="address"/>
</association>
<collectionproperty="orderdetails"
ofType="cn.po.Orderdetail">
<id property="id"column="orderdetail_id"/>
<result property="items_id"column="items_id"/>
<result property="items_num"column="items_num"/>
</collection>
</resultMap>
collection部分定義了查詢訂單明細信息。
collection:表示關聯查詢結果集
property="orderdetails":關聯查詢的結果集存儲在cn.itcast.mybatis.po.Orders上那個屬性。
ofType="cn.itcast.mybatis.po.Orderdetail":指定關聯查詢的結果集中的對象類型即List中的對象類型。
<id />及<result/>的意義同一對一查詢。
上邊定義的resultMap中黃色部分和一對一查詢信息的resultMap相同,這裏使用繼承可以不再填寫重複的內容,如下:
<resultMaptype="cn..po.Orders"
id="userorderdetailmap"
extends="userordermap">
<collectionproperty="orderdetails"
ofType="cn..po.Orderdetail">
<id property="id"column="orderdetail_id"/>
<result property="items_id"column="items_id"/>
<result property="items_num"column="items_num"/>
</collection>
</resultMap>
使用extends繼承信息userordermap。
使用:<selectid="findOrdersDetailList"resultMap="userorderdetailmap">
SELECT
orders.*,
user.username,
user.address,
orderdetail.id orderdetail_id,
orderdetail.items_id,
orderdetail.items_num
FROM orders,user,orderdetail
WHERE orders.user_id = user.id
AND orders.id = orderdetail.orders_id
</select>