前言
- 本文主要講解入門項目的基本知識
- 本文乃是我學習筆記總結,不足之處,還望指點
- 本文中因多處使用註釋,爲方便書寫,若以“//”雙斜槓開頭的都是註釋
- 本文中爲了清晰講解基礎知識,其中的代碼並未完整
項目需求
需求
查詢訂單及訂單明細的信息(大家自行腦補什麼訂單吧)
SQL語句
確定查詢的主表:訂單表
確定查詢的關聯表:訂單明細表
(相信大家也清楚簡單電商平臺數據庫的吧)
分析思路
分析
在orders.java類中添加List<orderDetail> orderDetails屬性。
最終會將訂單信息映射到orders中,訂單所對應的訂單明細映射到orders中的orderDetails屬性
在orders中添加list訂單明細
//訂單明細
private List<OrderDetail> orderdetails;
mapper.xml
resultMap的定義
<!-- 訂單及訂單明細的resultMap -->
<!-- 使用繼承,就可以不用再配置訂單信息和用戶信息的映射 -->
<resultMap type="Orders全路徑" id="OrdersAndOrderDetailResultMap" extends="OrdersUserResultMap">
<!-- 訂單信息 -->
<!-- 用戶信息 -->
<!-- 訂單明細信息 -->
<!-- 一個訂單關聯查詢出多個明細,要使用collection進行映射 -->
<!-- collection:對關聯查詢到多條記錄映射到集合對象中
property:將關聯查詢到多條記錄映射到Orders中的哪個屬性,也就是新添加的list
ofType:指定映射到list集合屬性中的pojo的類型
-->
<collection property="orderdetails" ofType="OrderDetail全路徑">
<!-- id:訂單明細唯一標識 -->
<!-- property:要將訂單明細的唯一標識映射到OrderDetail的哪個屬性 -->
<id column="" property=""/>
<!-- 其他普通列 -->
<result column="" property="" />
</collection>
</resultMap>
關於繼承的內容見MyBatis入門【九】一對一查詢之resultMap
配置SQL
<!-- 查詢訂單關聯查詢用戶信息 -->
<select id="findOrdersAndOrderDetailResultMap" parameterType="" resultMap="OrdersAndOrderDetailResultMap全路徑">
<!-- parameterType="",用於傳入查詢條件參數,在此處先進行省略 -->
select
orders.* ,
user.username,
user.sex,
user.address,
orderdetail.id,
orderdetail.num
from
orders , user,orderdetail
where
orders.id = user.id and orderdetail.id=order.id
</select>
mapper.java
public List<Orders> findOrdersAndOrderDetailResultMap(0 throws Exception;
測試
測試和一對多測試原理相同,這裏投個懶,留給大家去解決了