Mybatis高階查詢之一對一查詢的四種方法

2022-03-31 02:04:16 字數 1591 閱讀 2450

目錄1.2 使用resultmap配置一對一對映

1.3 使用resultmap的association標籤配置一對一對映

1.4 association標籤查詢(懶載入)

1.1-1.3 我們假設場景為使用者和角色一對一,根據資料庫基本原理,我們把外來鍵設定在使用者一邊,即在實體類中新增角色這個屬性。

1.1.1巢狀結果查詢的核心思想

應用在場景中:我們假設使用者和角色之間是一對一,在使用者類中乙個屬性是角色 sysrole型別的,查詢使用者的時候把所歸屬的角色查詢出來,那麼其就可以寫成如圖所示。

1.1.2 巢狀結果查詢優缺點

什麼是?通過了一次查詢把結果對映到了不同物件裡。

好處是什麼?減少了資料庫查詢次數,減少了資料庫的壓力。

壞處是什麼?要寫複雜的sql,不容易寫對,由於要對映到不同的物件中,一定程度上增加了伺服器的壓力。

1.2.1 具體應用過程

我們在1.1中使用的方法是直接在select標籤中直接寫後自動對映到實體類,resulttype返回型別是乙個實體類。還有一種方法是在xml檔案中的標籤配置關係,然後再在select的resulttype指定返回resultmap。詳細如圖所示:

property是實體類欄位名,colum是資料庫欄位名。此處resultmap這個標籤是定義了一種對映關係集合,這個集合的型別對應實體類user,所以type指定了乙個實體類。同樣我們在property中仍可以使用別名.欄位的方法,同1.1。

那麼我們來看,select語句是怎麼寫的。

1.2.2 注意事項

注意的是:去掉了資料庫字段,直接用實體類屬性查詢。至於那個別名問題,暫時還沒有想到會出現的場景,只需記住若是使用別名別名和resultmap的column一致

1.2.3 簡化寫法

首先我們看這張圖

在實際的場景中我們一般會單獨為user寫乙個對映檔案(這個對映檔案通常是自動生成工具生成的)裡面,resultmap會寫成如圖所示。這時候,我們要加乙個巢狀查詢的方法,那麼resultmap需要新增乙個?這時候我們要在寫乙個,如1.2.1圖,我們會發現有好多重複的內容。如下圖所示。

這個時候,我們引入一種繼承(增加extend屬性)機制。改成如下圖所示。

此處我們假設場景是新的,使用者和部落格存在一對一關係,按照資料庫設計的基本原理,我們再user中設定外來鍵指向blog表,對應實體類就是user類中增加blog型別的blog屬性。

1.4.1 與前1.1-1.3三種方式的區別

1.4.2 具體例項

association中的屬性介紹

查詢語句執行順序

存在問題

解決方法

MyBatis 高階查詢之一對一查詢(九)

查詢條件 根據遊戲角色id,查詢賬號資訊 根據角色id查詢賬號資訊 param id 角色id return 角色實體物件 public roleentity selectrolebyid int id 接下來,我分別演示關聯查詢和子查詢方式實現介面方法的對映。關聯查詢方式 現在我們暫時先拋開 my...

mybatis 查詢一對一

官方文件 public inte ce user getuser intuserid public inte ce list getarticlebyuserid int userid 第一種方法 select a.article id,a.user id,a.title,a.content,a.c...

mybatis之一對一,一對多

resulttype 直接表示返回型別 基本資料型別 引用資料型別 resultmap 對外部resultmap 資料庫字段資訊和物件屬性不一樣 複雜的聯合查詢,自由控制對映結果 注 它們兩個不能同時存在 association select from class c,teacher t where...