91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Mybatis中實現關聯關系

發布時間:2021-04-09 16:48:09 來源:億速云 閱讀:189 作者:Leah 欄目:編程語言

怎么在Mybatis中實現關聯關系?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

三種關聯關系:一對多,一對一,多對多

兩種查詢方式:嵌套查詢,連接查詢(也可稱作:多表單獨查詢,多表連接查詢)

每一種關聯關系都可以通過嵌套查詢和連接查詢來實現。

嵌套查詢相當于進行了兩次查詢,而連接查詢將兩張表連接然后再進行查詢,這樣只進行了一次查詢

由于數據表要對實體類進行映射,所以每一種關聯關系中都需要在java類中定義屬性來進行關聯,可以通過如圖關聯:

怎么在Mybatis中實現關聯關系

一對一查詢

數據表實現:通過A表的主鍵引用B表的主鍵作為外鍵,就是說在A中主鍵和外鍵同一字段。

查詢方式:嵌套查詢,連接查詢;

關系:丈夫和妻子(Husband Wife)

嵌套查詢實現:

怎么在Mybatis中實現關聯關系

在實體類husband中關聯wife,進行連接查詢之后,需要使用resultMap對查出來的結果進行結果映射;

resultMap中type屬性指定映射的類型;id標簽為主鍵,result為普通屬性;

association標簽指定關聯一個類,property屬性是它在數據表中的屬性名,javaType是關聯屬性的java類型;

連接查詢實現:

怎么在Mybatis中實現關聯關系

其中association標簽中:

select屬性: 加載另外一個映射語句,可以加載這個屬性映射需要的復雜類型,(就是可以再加載指定的映射類型)

column屬性:用于給select傳遞參數,可以將已經獲取到的屬性值,傳遞給目標 select 語句作為參數;

一對多查詢

數據表實現:使用一個外鍵進行關聯,外鍵放在多方的表中;

關聯屬性:可以寫在一方的實體類中也可以寫在多方的實體類中;

  1. 寫在一方中,使用list或別的集合進行關聯(一方找多方)

  2. 寫在多方中,定義關聯對象屬性(通過多方找一方)

以多表連接查詢為例:

關系:一個國家對應多個部長

怎么在Mybatis中實現關聯關系

通過resultMap進行結果映射,collection標簽可以指定映射的集合,其中porperty屬性指定的是該關聯屬性的名稱,ofType指定的是集合里面的java類型,id,result標簽同resultMap中的一樣是對集合里面的屬性進行映射;

多表單獨查詢(嵌套查詢):

怎么在Mybatis中實現關聯關系

與一對一中類似,在resultMap的collection中聲明中元素類型,然后插入參數,將查詢結果進行映射;

自關聯查詢:

數據表:一張數據表中包含著所有的條目,條目之間為一對多的關系(一個欄目下面包含著多個欄目)

查詢方式:連接查詢(自己連接自己)和嵌套查詢(調用自身查詢)

以嵌套查詢為例:

怎么在Mybatis中實現關聯關系

這是通過父欄目查詢子欄目的自關聯查詢:

在resultMap中collection的select中調用原來的查詢語句進行查詢,形成一個循環調用,一直到查詢到的子欄目為空的時候停止;最后對查詢結果進行映射。

當然,也可通過子欄目查找它的所有的父欄目;

多對多查詢

數據表:需要用一張中間表表示多對多的關系,這張中間表引入兩張表的主鍵作為外鍵;

查詢方式:

  1. 多表連接查詢,不需要定義中間表實體類

  2. 多表嵌套查詢,需要定義中間表實體類

  3. 多表復雜查詢,不需要定義中間表實體類,但是返回值是一個List;

多表嵌套查詢定義中間實體類:

由于兩張表之間分別單獨查詢,需要通過中間表查找關聯并使用resultMap進行映射關系處理,resultMap需要指明映射的java的類,并在實體類中定義關聯屬性才可以得到關聯屬性的信息;簡單來說:一張表查詢完之后想要得到另一張表的信息,實際上是通過中間表來進行映射得到另一張表的信息的;

多表復雜查詢:通過一張表先和中間表進行連接查詢,然后再查詢另一張表的信息;

怎么在Mybatis中實現關聯關系

復雜查詢返回值是一個List:

由于一張表先和中間表連接,而中間表是多對多的關系;所以得到一個一對多的List形式查詢結果;

類似這樣一對多:

怎么在Mybatis中實現關聯關系

關于怎么在Mybatis中實現關聯關系問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

铜山县| 紫金县| 东辽县| 海南省| 克什克腾旗| 清丰县| 益阳市| 临清市| 南昌市| 三门县| 巍山| 永登县| 吉林市| 山西省| 金塔县| 齐齐哈尔市| 屏东县| 栖霞市| 教育| 新干县| 康定县| 珲春市| 万盛区| 霍林郭勒市| 道孚县| 思茅市| 子洲县| 阿尔山市| 阿巴嘎旗| 齐河县| 建平县| 友谊县| 靖州| 长宁区| 元氏县| 崇明县| 巨鹿县| 韶山市| 黎川县| 昭苏县| 聊城市|