您好,登錄后才能下訂單哦!
本篇文章為大家展示了Mybatis中怎么實現(xiàn)關聯(lián)關系,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
三種關聯(lián)關系:一對多,一對一,多對多
兩種查詢方式:嵌套查詢,連接查詢(也可稱作:多表單獨查詢,多表連接查詢)
每一種關聯(lián)關系都可以通過嵌套查詢和連接查詢來實現(xiàn)。
嵌套查詢相當于進行了兩次查詢,而連接查詢將兩張表連接然后再進行查詢,這樣只進行了一次查詢
由于數(shù)據(jù)表要對實體類進行映射,所以每一種關聯(lián)關系中都需要在java類中定義屬性來進行關聯(lián),可以通過如圖關聯(lián):
一對一查詢
數(shù)據(jù)表實現(xiàn):通過A表的主鍵引用B表的主鍵作為外鍵,就是說在A中主鍵和外鍵同一字段。
查詢方式:嵌套查詢,連接查詢;
關系:丈夫和妻子(Husband Wife)
嵌套查詢實現(xiàn):
在實體類husband中關聯(lián)wife,進行連接查詢之后,需要使用resultMap對查出來的結果進行結果映射;
resultMap中type屬性指定映射的類型;id標簽為主鍵,result為普通屬性;
association標簽指定關聯(lián)一個類,property屬性是它在數(shù)據(jù)表中的屬性名,javaType是關聯(lián)屬性的java類型;
連接查詢實現(xiàn):
其中association標簽中:
select屬性: 加載另外一個映射語句,可以加載這個屬性映射需要的復雜類型,(就是可以再加載指定的映射類型)
column屬性:用于給select傳遞參數(shù),可以將已經(jīng)獲取到的屬性值,傳遞給目標 select 語句作為參數(shù);
一對多查詢
數(shù)據(jù)表實現(xiàn):使用一個外鍵進行關聯(lián),外鍵放在多方的表中;
關聯(lián)屬性:可以寫在一方的實體類中也可以寫在多方的實體類中;
寫在一方中,使用list或別的集合進行關聯(lián)(一方找多方) 寫在多方中,定義關聯(lián)對象屬性(通過多方找一方)
以多表連接查詢?yōu)槔?/strong>
關系:一個國家對應多個部長
通過resultMap進行結果映射,collection標簽可以指定映射的集合,其中porperty屬性指定的是該關聯(lián)屬性的名稱,ofType指定的是集合里面的java類型,id,result標簽同resultMap中的一樣是對集合里面的屬性進行映射;
多表單獨查詢(嵌套查詢):
與一對一中類似,在resultMap的collection中聲明中元素類型,然后插入?yún)?shù),將查詢結果進行映射;
自關聯(lián)查詢:
數(shù)據(jù)表:一張數(shù)據(jù)表中包含著所有的條目,條目之間為一對多的關系(一個欄目下面包含著多個欄目)
查詢方式:連接查詢(自己連接自己)和嵌套查詢(調用自身查詢)
以嵌套查詢?yōu)槔?/p>
這是通過父欄目查詢子欄目的自關聯(lián)查詢:
在resultMap中collection的select中調用原來的查詢語句進行查詢,形成一個循環(huán)調用,一直到查詢到的子欄目為空的時候停止;最后對查詢結果進行映射。
當然,也可通過子欄目查找它的所有的父欄目;
多對多查詢
數(shù)據(jù)表:需要用一張中間表表示多對多的關系,這張中間表引入兩張表的主鍵作為外鍵;
查詢方式:
多表連接查詢,不需要定義中間表實體類 多表嵌套查詢,需要定義中間表實體類 多表復雜查詢,不需要定義中間表實體類,但是返回值是一個List;
多表嵌套查詢定義中間實體類:
由于兩張表之間分別單獨查詢,需要通過中間表查找關聯(lián)并使用resultMap進行映射關系處理,resultMap需要指明映射的java的類,并在實體類中定義關聯(lián)屬性才可以得到關聯(lián)屬性的信息;簡單來說:一張表查詢完之后想要得到另一張表的信息,實際上是通過中間表來進行映射得到另一張表的信息的;
多表復雜查詢:通過一張表先和中間表進行連接查詢,然后再查詢另一張表的信息;
復雜查詢返回值是一個List:
由于一張表先和中間表連接,而中間表是多對多的關系;所以得到一個一對多的List形式查詢結果;
上述內容就是Mybatis中怎么實現(xiàn)關聯(lián)關系,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。