1. 程式人生 > >Mybatisd 的高階結果對映

Mybatisd 的高階結果對映

1高階結果對映

1.1資料模型分析
1、明確每張表儲存的資訊
2、明確每張表中關鍵欄位(主鍵、外來鍵、非空)
3、明確資料庫中表與表之間的外來鍵關係
4、明確業務中表與表的關係(建立在具體的業務)
這裡寫圖片描述
1.2一對一對映
1.2一對一對映
1.2一對一對映

1.2.1需求
查詢訂單資訊,關聯查詢使用者資訊

1.2.2Sql
主資訊:orders
從資訊:user

SELECT 
  orders.`id`,
  orders.`user_id`,
  orders.`number`,
  user.`username`,
  user.`sex` 
FROM
  orders,
  USER
WHERE orders.`user_id` = user.`id`

1.2.3resultType

1.2.3.1建立擴充套件類
這裡寫圖片描述
1.2.3.2對映檔案
這裡寫圖片描述
1.2.3.3Mapper介面
這裡寫圖片描述
1.2.3.4測試程式碼
這裡寫圖片描述
1.2.3.5小結
使用resultType來進行一對一結果對映,查詢出的列的個數和對映的屬性的個數要一致。而且對映的屬性要存在與一個大的物件中,它是一種平鋪式的對映,即資料庫查詢出多少條記錄,則對映成多少個物件。
1.2.4resultMap
使用resultMap來進行一對一結果對映,它是將關聯物件新增到主資訊的物件中,具體說是物件巢狀物件的一種對映方式。
1.2.4.1修改擴充套件類


這裡寫圖片描述
1.2.4.2對映檔案
這裡寫圖片描述
1.2.4.3Mapper介面
這裡寫圖片描述
1.2.4.4測試程式碼
這裡寫圖片描述
1.2.5小結
在一對一結果對映時,使用resultType更加簡單方便,如果有特殊要求(物件巢狀物件)時,需要使用resultMap進行對映,比如:查詢訂單列表,然後在點選列表中的檢視訂單明細按鈕,這個時候就需要使用resultMap進行結果對映。而resultType更適應於查詢明細資訊,比如,查詢訂單明細列表。

1.3一對多對映
1.3一對多對映
1.3一對多對映

1.3.1需求
查詢訂單資訊,關聯查詢訂單明細資訊及使用者資訊

1.3.2Sql
主資訊:orders
從資訊:orderdetail、user

SELECT 
  orders.`id`,
  orders.`user_id`,
  orders.`number`,
  user.`username`,
  user.`sex`,
  orderdetail.`id` detailId,
  orderdetail.`items_id`,
  orderdetail.`items_num` 
FROM
  orders,
  USER,
  orderdetail 
WHERE orders.`user_id` = user.`id` 
  AND orders.`id` = orderdetail.`orders_id`

1.3.3修改擴充套件類
這裡寫圖片描述
1.3.4對映檔案
這裡寫圖片描述
1.3.5Mapper介面
這裡寫圖片描述
1.3.6測試程式碼
這裡寫圖片描述

1.4多對多對映
1.4多對多對映
1.4多對多對映
多對多對映是一對多對映的特例

1.4.1需求
查詢使用者資訊,關聯查詢該使用者購買的商品資訊

1.4.2Sql
主資訊:user
從資訊:items、orders、orderdetail

SELECT 
  orders.`id`,
  orders.`user_id`,
  orders.`number`,
  user.`username`,
  user.`sex`,
  orderdetail.`id` detailId,
  orderdetail.`items_id`,
  orderdetail.`items_num`,
  items.`name`,
  items.`price` 
FROM
  orders,
  USER,
  orderdetail,
  items 
WHERE orders.`user_id` = user.`id` 
  AND orders.`id` = orderdetail.`orders_id` 
  AND orderdetail.`items_id` = items.`id`

1.4.3修改po類
在User類中新增List orders;
這裡寫圖片描述
在Orders類中新增List detailList;
這裡寫圖片描述
在Orderdetail中新增Items items;
這裡寫圖片描述
1.4.4Mapper介面
這裡寫圖片描述
1.4.5對映檔案
這裡寫圖片描述
這裡寫圖片描述
1.4.6測試程式碼
這裡寫圖片描述

over~~~