mybatis 一對多 id標籤作用

2022-06-09 16:48:11 字數 878 閱讀 1683

一對多

mybatis的resultmap只用於配置結果如何對映,id的唯一作用就是在巢狀的對映配置時判斷資料是否相同,當配置id標籤時,mybatis只需要逐條比較所有資料中id標籤字段值是否相同即可,可以提高處理效率。

為了更清楚地理解id 的作用,可以臨時對usermap 的對映進行如下修改。

在測試資料中,使用者的密碼都是123456 ,因此如果用密碼作為id,所有結果將合併為1條資料。

使用者數: 1

使用者名稱:admin

角色名:管理員

角色名:普通使用者

對比之前的正確結果,可以看到角色記錄也合併了

使用者數:2

使用者名稱:admin

角色名稱:管理員

角色名稱:普通使用者

使用者名稱:test

角色名稱:普通使用者

1、id標籤也可以配置多個,比如聯合主鍵時

2、很可能也會出現沒有配置id的情況,這時mybatis就會把resultmap中所有字段進行比較,如果所有欄位的值都相同就合併,只要有乙個字段值不同,就不合併。這時,當結果集欄位數為m,記錄數n,最少m×n次比較,相比配置id時的n次比較,效率相差更多,所以要盡可能配置id標籤。

3、在巢狀結果配置id屬性時如果查詢語句中沒有查詢id屬性配置的列,就會導致id對應的值為null。這種情況下,所有值的id都相同,因此會使巢狀的集合中只有一條資料。所以在配置id列時,查詢語句中必須包含該列。

collection 支援的屬性以及屬性的作用和association 完全相同。雖然association和collection標籤是分開介紹的,但是這兩者可以組合使用或者互相巢狀使用,也可以使用符合自己需要的任何資料結構,不需要侷限於資料庫表之間的關聯關係。

mybatis 一對多查詢

查詢訂單及訂單明細的資訊。這裡怎麼體現了一對多 這裡orders的id出現重複的記錄,無法對映到orders類中 collection 對關聯查詢到多條記錄對映到集合物件中 4 查詢訂單 關聯使用者 及訂單明細 public listfindordersandorderdetailresultmap...

mybatis 一對多查詢

與phoenix不同,在mysql中查詢的結果不會按照id預設排序。所以如果頁面有隱含的順序要求 兩次呼叫,列表順序不變 此時千萬不要使用set,而應該使用list。接下來進入正題 直接上 public class userpublic class order 根據id查詢使用者,並且查詢出該使用者...

Mybatis一對多查詢

mybatis中有兩個標籤,association和collection,這兩個標籤都有兩種用法 一種是如下方式一可以與查詢繫結在一起,使用這種方式association和collection的效果是一樣的,都可以進行一對多和一對一的查詢,但這種方式會進行n m次查詢,在資料量非常大的情況下不推薦使...