最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis中3種關(guān)聯(lián)關(guān)系的實(shí)現(xiàn)方法示例

 更新時(shí)間:2019年11月02日 10:29:24   作者:一入碼坑深似海  
這篇文章主要給大家介紹了關(guān)于Mybatis中3種關(guān)聯(lián)關(guān)系的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Mybatis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

三種關(guān)聯(lián)關(guān)系:一對(duì)多,一對(duì)一,多對(duì)多

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

每一種關(guān)聯(lián)關(guān)系都可以通過(guò)嵌套查詢和連接查詢來(lái)實(shí)現(xiàn)。

嵌套查詢相當(dāng)于進(jìn)行了兩次查詢,而連接查詢將兩張表連接然后再進(jìn)行查詢,這樣只進(jìn)行了一次查詢

由于數(shù)據(jù)表要對(duì)實(shí)體類進(jìn)行映射,所以每一種關(guān)聯(lián)關(guān)系中都需要在java類中定義屬性來(lái)進(jìn)行關(guān)聯(lián),可以通過(guò)如圖關(guān)聯(lián):


一對(duì)一查詢

數(shù)據(jù)表實(shí)現(xiàn):通過(guò)A表的主鍵引用B表的主鍵作為外鍵,就是說(shuō)在A中主鍵和外鍵同一字段。

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

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

嵌套查詢實(shí)現(xiàn):


在實(shí)體類husband中關(guān)聯(lián)wife,進(jìn)行連接查詢之后,需要使用resultMap對(duì)查出來(lái)的結(jié)果進(jìn)行結(jié)果映射;

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

association標(biāo)簽指定關(guān)聯(lián)一個(gè)類,property屬性是它在數(shù)據(jù)表中的屬性名,javaType是關(guān)聯(lián)屬性的java類型;

連接查詢實(shí)現(xiàn):


其中association標(biāo)簽中:

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

column屬性:用于給select傳遞參數(shù),可以將已經(jīng)獲取到的屬性值,傳遞給目標(biāo) select 語(yǔ)句作為參數(shù);

一對(duì)多查詢

數(shù)據(jù)表實(shí)現(xiàn):使用一個(gè)外鍵進(jìn)行關(guān)聯(lián),外鍵放在多方的表中;

關(guān)聯(lián)屬性:可以寫(xiě)在一方的實(shí)體類中也可以寫(xiě)在多方的實(shí)體類中;

  1. 寫(xiě)在一方中,使用list或別的集合進(jìn)行關(guān)聯(lián)(一方找多方)
  2. 寫(xiě)在多方中,定義關(guān)聯(lián)對(duì)象屬性(通過(guò)多方找一方)

以多表連接查詢?yōu)槔?/strong>

關(guān)系:一個(gè)國(guó)家對(duì)應(yīng)多個(gè)部長(zhǎng)


通過(guò)resultMap進(jìn)行結(jié)果映射,collection標(biāo)簽可以指定映射的集合,其中porperty屬性指定的是該關(guān)聯(lián)屬性的名稱,ofType指定的是集合里面的java類型,id,result標(biāo)簽同resultMap中的一樣是對(duì)集合里面的屬性進(jìn)行映射;

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


與一對(duì)一中類似,在resultMap的collection中聲明中元素類型,然后插入?yún)?shù),將查詢結(jié)果進(jìn)行映射;

自關(guān)聯(lián)查詢:

數(shù)據(jù)表:一張數(shù)據(jù)表中包含著所有的條目,條目之間為一對(duì)多的關(guān)系(一個(gè)欄目下面包含著多個(gè)欄目)

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

以嵌套查詢?yōu)槔?/p>


這是通過(guò)父欄目查詢子欄目的自關(guān)聯(lián)查詢:

在resultMap中collection的select中調(diào)用原來(lái)的查詢語(yǔ)句進(jìn)行查詢,形成一個(gè)循環(huán)調(diào)用,一直到查詢到的子欄目為空的時(shí)候停止;最后對(duì)查詢結(jié)果進(jìn)行映射。

當(dāng)然,也可通過(guò)子欄目查找它的所有的父欄目;

多對(duì)多查詢

數(shù)據(jù)表:需要用一張中間表表示多對(duì)多的關(guān)系,這張中間表引入兩張表的主鍵作為外鍵;

查詢方式:

  1. 多表連接查詢,不需要定義中間表實(shí)體類
  2. 多表嵌套查詢,需要定義中間表實(shí)體類
  3. 多表復(fù)雜查詢,不需要定義中間表實(shí)體類,但是返回值是一個(gè)List;

多表嵌套查詢定義中間實(shí)體類:

由于兩張表之間分別單獨(dú)查詢,需要通過(guò)中間表查找關(guān)聯(lián)并使用resultMap進(jìn)行映射關(guān)系處理,resultMap需要指明映射的java的類,并在實(shí)體類中定義關(guān)聯(lián)屬性才可以得到關(guān)聯(lián)屬性的信息;簡(jiǎn)單來(lái)說(shuō):一張表查詢完之后想要得到另一張表的信息,實(shí)際上是通過(guò)中間表來(lái)進(jìn)行映射得到另一張表的信息的;

多表復(fù)雜查詢:通過(guò)一張表先和中間表進(jìn)行連接查詢,然后再查詢另一張表的信息;


復(fù)雜查詢返回值是一個(gè)List:

由于一張表先和中間表連接,而中間表是多對(duì)多的關(guān)系;所以得到一個(gè)一對(duì)多的List形式查詢結(jié)果;

類似這樣一對(duì)多:


總結(jié):

實(shí)際上除了數(shù)據(jù)庫(kù)的知識(shí)以外,Mybatis中的關(guān)聯(lián)關(guān)系實(shí)現(xiàn),主要通過(guò)resultMap來(lái)實(shí)現(xiàn)的

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Java?Swing實(shí)現(xiàn)記事本頁(yè)面

    Java?Swing實(shí)現(xiàn)記事本頁(yè)面

    這篇文章主要為大家詳細(xì)介紹了Java?Swing實(shí)現(xiàn)記事本頁(yè)面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java超詳細(xì)梳理IO流的使用方法上

    Java超詳細(xì)梳理IO流的使用方法上

    流(Stream)是指一連串的數(shù)據(jù)(字符或字節(jié)),是以先進(jìn)先出的方式發(fā)送信息的通道,數(shù)據(jù)源發(fā)送的數(shù)據(jù)經(jīng)過(guò)這個(gè)通道到達(dá)目的地,按流向區(qū)分為輸入流和輸出流
    2022-04-04
  • SpringBoot與SpringSecurity整合方法附源碼

    SpringBoot與SpringSecurity整合方法附源碼

    這篇文章主要介紹了SpringBoot與SpringSecurity整合,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 詳細(xì)聊一聊java中封裝的那點(diǎn)事

    詳細(xì)聊一聊java中封裝的那點(diǎn)事

    封裝是一個(gè)非常廣泛的概念,小到一個(gè)屬性的封裝,大到一個(gè)框架或者一個(gè)項(xiàng)目的封裝,下面這篇文章主要給大家介紹了關(guān)于java中封裝的那點(diǎn)事,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Java?常量池詳解之class文件常量池?和class運(yùn)行時(shí)常量池

    Java?常量池詳解之class文件常量池?和class運(yùn)行時(shí)常量池

    這篇文章主要介紹了Java?常量池詳解之class文件常量池?和class運(yùn)行時(shí)常量池,常量池主要存放兩大類常量:字面量,符號(hào)引用,本文結(jié)合示例代碼對(duì)java class常量池相關(guān)知識(shí)介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • 詳解如何在Spring中為@Value注解設(shè)置默認(rèn)值

    詳解如何在Spring中為@Value注解設(shè)置默認(rèn)值

    在Spring開(kāi)發(fā)中,我們經(jīng)常會(huì)遇到需要從配置文件中讀取屬性的情況,@Value注解是Spring提供的一種便捷方式,能夠讓我們輕松地將配置文件中的屬性注入到Spring Bean中,
    2024-10-10
  • 解決springboot報(bào)錯(cuò)Could not resolve placeholder‘xxx‘ in value“${XXXX}

    解決springboot報(bào)錯(cuò)Could not resolve placeholder‘x

    這篇文章主要介紹了解決springboot報(bào)錯(cuò):Could not resolve placeholder ‘xxx‘ in value “${XXXX}問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • JdbcTemplate操作數(shù)據(jù)庫(kù)的具體方法

    JdbcTemplate操作數(shù)據(jù)庫(kù)的具體方法

    這篇文章主要介紹了JdbcTemplate操作數(shù)據(jù)庫(kù)的具體操作方法,準(zhǔn)備工作需要大家先導(dǎo)入相關(guān)的jar包,建個(gè)數(shù)據(jù)庫(kù),具體操作方法跟隨小編一起看看吧
    2022-03-03
  • vue+springboot上傳文件、圖片、視頻及回顯到前端詳解

    vue+springboot上傳文件、圖片、視頻及回顯到前端詳解

    一般來(lái)說(shuō)vue可以使用axios或者fetch等ajax庫(kù)發(fā)送文件請(qǐng)求,而springboot則可以使用Spring MVC的方式來(lái)處理上傳文件請(qǐng)求,下面這篇文章主要給大家介紹了關(guān)于vue+springboot上傳文件、圖片、視頻及回顯到前端的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • Java枚舉學(xué)習(xí)之定義和基本特性詳解

    Java枚舉學(xué)習(xí)之定義和基本特性詳解

    枚舉是JAVA?5.0后增加的一個(gè)重要類型。可以用來(lái)表示一組取值范圍固定的變量。本文將通過(guò)示例為大家詳細(xì)講解枚舉的定義和基本特性,感興趣的可以了解一下
    2022-08-08

最新評(píng)論

舞钢市| 耿马| 福清市| 柳州市| 定远县| 前郭尔| 周口市| 左权县| 政和县| 东方市| 封丘县| 长宁县| 汉源县| 随州市| 凤翔县| 通道| 澄城县| 乐山市| 奉节县| 莱西市| 泗洪县| 海安县| 商丘市| 东方市| 滨海县| 嵊州市| 彭阳县| 黄大仙区| 通河县| 常州市| 阿鲁科尔沁旗| 白水县| 定远县| 八宿县| 常熟市| 绥德县| 刚察县| 布拖县| 大石桥市| 莫力| 株洲县|