需求
查詢訂單及訂單明細(xì)的信息艺栈。
sql語句
確定主查詢表:訂單表
確定關(guān)聯(lián)查詢表:訂單明細(xì)表
在一對一查詢基礎(chǔ)上添加訂單明細(xì)表關(guān)聯(lián)即可桃纯。
SELECT
orders.*,
user.username,
user.sex,
user.address
orderdetail.items_id,
orderdetail.items_num,
orderdetail.orders_id
FROM
orders,
user,
orderdetail
where orders.user_id = user.id AND orderdetail.orders_id=orders.id
分析
使用resultType將上邊的查詢結(jié)果映射到pojo中泞当,訂單信息就是重復(fù)的栗恩。
要求
對orders映射不能出現(xiàn)重復(fù)記錄。
在orders.java類中添加List<orderDetail> orderDetails屬性犬缨。
最終會將訂單信息映射到orders中搓译,訂單所對應(yīng)的訂單明細(xì)映射到orders中的orderDetails屬性中撵枢。
映射成的orders記錄數(shù)為兩條(order信息不重復(fù))
每個orders中的orderDetails屬性存儲了該訂單所對應(yīng)的訂單明細(xì)吠架。
在Orders中添加list訂單明細(xì)屬性
mapper.xml
resultMap定義
mapper.java
小結(jié)
mybatis使用resultType的collection對關(guān)聯(lián)查詢的多條記錄映射到一個list集合屬性中芙贫。
將訂單明細(xì)映射到orders中的orderdetails中,需要自己處理傍药,使用雙重循環(huán)遍歷磺平,去掉重復(fù)記錄,將訂單明細(xì)放在orderdetails中拐辽。