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

Mybatis延遲加載原理和延遲加載配置詳解

 更新時間:2023年10月27日 10:26:15   作者:愛穿背帶褲的馫  
這篇文章主要介紹了Mybatis延遲加載原理和延遲加載配置詳解,MyBatis中的延遲加載,也稱為懶加載,是指在進(jìn)行表的關(guān)聯(lián)查詢時,按照設(shè)置延遲規(guī)則推遲對關(guān)聯(lián)對象的select查詢,需要的朋友可以參考下

一、概念

MyBatis中的延遲加載,也稱為懶加載,是指在進(jìn)行表的關(guān)聯(lián)查詢時,按照設(shè)置延遲規(guī)則推遲對關(guān)聯(lián)對象的select查詢。例如在進(jìn)行一對多查詢的時候,只查詢出一方,當(dāng)程序中需要多方的數(shù)據(jù)時,mybatis再發(fā)出sql語句進(jìn)行查詢,這樣子延遲加載就可以的減少數(shù)據(jù)庫壓力。MyBatis 的延遲加載只是對關(guān)聯(lián)對象的查詢有遲延設(shè)置,對于主加載對象都是直接執(zhí)行查詢語句的。

二、原理

MyBatis實現(xiàn)延遲加載的方式是使用代理對象,在訪問未加載的數(shù)據(jù)時觸發(fā)代理對象的方法,從而進(jìn)行數(shù)據(jù)的加載。

三、延遲加載支持的對象

Mybatis 僅支持 association 關(guān)聯(lián)對象和 collection 關(guān)聯(lián)集合對象的延遲加載

  • association 指的就是一對一
  • collection 指的就是一對多查詢

四、 配置延遲加載

1.配置全局延遲加載

	<!-- 在Mybatis的核?配置?件中可以使?setting標(biāo)簽修改全局的加載策略-->
	<settings>
		<!-- 打開延遲加載的開關(guān) -->
		<setting name="lazyLoadingEnabled" value="true"/>
		<!--不是必要的標(biāo)簽   false 深入式延遲加載   true 侵入式延遲加載 -->
	 	<setting name="aggressiveLazyLoading" value="false"/>
	</settings>

侵入式延遲加載和深入式延遲加載的區(qū)別

class 與 student 之間是一對多關(guān)系,我們在加載時,可以先加載 class 數(shù)據(jù),當(dāng)需要使用到 student 數(shù)據(jù)時,我們再加載 student 的相關(guān)數(shù)據(jù)。

  • 侵入式延遲加載 侵入式延遲加載指的是只要主表的任一屬性加載,就會觸發(fā)延遲加載,比如:class 的 name 被加載,student 信息就會被觸發(fā)加載。
  • 深度延遲加載 深度延遲加載指的是只有關(guān)聯(lián)的從表信息被加載,延遲加載才會被觸發(fā)。 通常,我們在實戰(zhàn)中更傾向使用深度延遲加載。

2 配置局部延遲加載

<!--修改標(biāo)簽的fetchType屬性 fetchType="lazy" 延遲加載策略 fetchType="eager" ?即加載策略-->
<resultMap id="kunkunMap" type="user">
    <id column="id" property="id"></id>
    <result column="ctrl" property="ctrl"></result>
    
    <!--開啟?對多 延遲加載-->
    <collection property="userList" ofType="order" column="id"
        select="com.lagou.dao.OrderMapper.findByUid" fetchType="lazy">
    </collection>
    
    <!--開啟?對一 延遲加載-->
	<association property="order" column="id" javaType="order"
        select="com.xinxin.dao.OrderMapper.findById" fetchType="lazy">
    </association>
</resultMap>

3.加載順序

局部的加載策略的優(yōu)先級高于全局的加載策略。

到此這篇關(guān)于Mybatis延遲加載原理和延遲加載配置詳解的文章就介紹到這了,更多相關(guān)Mybatis延遲加載原理和配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于Dubbo初始問題

    關(guān)于Dubbo初始問題

    這篇文章主要介紹了關(guān)于Dubbo初始問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Spring sentinel哨兵模式相關(guān)原理解析

    Spring sentinel哨兵模式相關(guān)原理解析

    這篇文章主要介紹了Spring sentinel哨兵模式相關(guān)原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • mybatis自定義類型處理器的實現(xiàn)

    mybatis自定義類型處理器的實現(xiàn)

    在MyBatis使用中,有時需要對特定數(shù)據(jù)類型進(jìn)行定制處理,自定義類型處理器(TypeHandler)可以實現(xiàn)這一需求,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • idea64.exe.vmoptions文件如何設(shè)置調(diào)整VM配置文件

    idea64.exe.vmoptions文件如何設(shè)置調(diào)整VM配置文件

    這篇文章主要介紹了idea64.exe.vmoptions文件如何設(shè)置調(diào)整VM配置文件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • JVM(Java?Virtual?Machine,Java虛擬機)的作用詳解

    JVM(Java?Virtual?Machine,Java虛擬機)的作用詳解

    JVM是Java語言實現(xiàn)“一次編寫,到處運行”特性的基石,也是Java平臺的核心組成部分,其主要作用包括平臺無關(guān)性、內(nèi)存管理、運行Java程序、安全性以及性能優(yōu)化,通過這些功能,JVM確保了Java程序的可移植性、高效性和安全性
    2025-03-03
  • Java中BIO、NIO和AIO舉例總結(jié)

    Java中BIO、NIO和AIO舉例總結(jié)

    Java BIO、NIO、AIO是 Java 中的三種I/O模式,每種模式都有其特點和應(yīng)用場景,這篇文章主要介紹了Java中BIO、NIO和AIO的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-02-02
  • Java使用ThreadLocal實現(xiàn)當(dāng)前登錄信息的存取功能

    Java使用ThreadLocal實現(xiàn)當(dāng)前登錄信息的存取功能

    ThreadLocal和其他并發(fā)工具一樣,也是用于解決多線程并發(fā)訪問,下這篇文章主要給大家介紹了關(guān)于Java使用ThreadLocal實現(xiàn)當(dāng)前登錄信息的存取功能,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • Java數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)之二叉樹

    Java數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)之二叉樹

    今天給大家?guī)淼氖顷P(guān)于Java數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識,文章圍繞著Java二叉樹展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java中用enum結(jié)合testng實現(xiàn)數(shù)據(jù)驅(qū)動的方法示例

    Java中用enum結(jié)合testng實現(xiàn)數(shù)據(jù)驅(qū)動的方法示例

    TestNG數(shù)據(jù)驅(qū)動提供的參數(shù)化讓我們在測試項目可以靈活根據(jù)需求建立不同的dataprovider來提供數(shù)據(jù),而真正實現(xiàn)數(shù)據(jù),頁面,測試彼此獨立而又有機結(jié)合的可能性。 下面這篇文章主要給大家介紹了Java中用enum和testng做數(shù)據(jù)驅(qū)動的方法示例,需要的朋友可以參考借鑒。
    2017-01-01
  • 詳解Java注解教程及自定義注解

    詳解Java注解教程及自定義注解

    這篇文章主要為大家詳細(xì)介紹了Java注解教程及自定義注解,幫助大家更好地學(xué)習(xí)Java注解,感興趣的小伙伴們可以參考一下
    2016-01-01

最新評論

肥西县| 蓬安县| 汕尾市| 南澳县| 阜康市| 临夏市| 浑源县| 卓资县| 静宁县| 柏乡县| 通江县| 西乌珠穆沁旗| 双柏县| 车险| 和田市| 日土县| 临朐县| 吴江市| 新和县| 玉门市| 新绛县| 荔波县| 庆阳市| 昌平区| 吉安县| 邢台县| 柘荣县| 平利县| 屏南县| 齐齐哈尔市| 双柏县| 连州市| 广平县| 长治县| 伽师县| 红原县| 钟山县| 巴彦淖尔市| 拜泉县| 博白县| 舞阳县|