欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、概念

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

二、原理

MyBatis實現(xiàn)延遲加載的方式是使用代理對象,在訪問未加載的數(shù)據(jù)時觸發(fā)代理對象的方法,從而進行數(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)文章

  • java獲取當(dāng)前時間的四種方法代碼實例

    java獲取當(dāng)前時間的四種方法代碼實例

    這篇文章主要介紹了java獲取當(dāng)前時間的四種方法代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • 關(guān)于后綴表達式的java實現(xiàn)過程

    關(guān)于后綴表達式的java實現(xiàn)過程

    這篇文章主要介紹了關(guān)于后綴表達式的java實現(xiàn)過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • SpringBoot實現(xiàn)自定義指標(biāo)監(jiān)控功能

    SpringBoot實現(xiàn)自定義指標(biāo)監(jiān)控功能

    本文主要介紹了SpringBoot實現(xiàn)自定義指標(biāo)監(jiān)控功能的實現(xiàn),,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,感興趣的小伙伴跟著著小編來一起來學(xué)習(xí)吧
    2024-01-01
  • Mybatis如何通過注解開啟使用二級緩存

    Mybatis如何通過注解開啟使用二級緩存

    這篇文章主要介紹了Mybatis基于注解開啟使用二級緩存,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • SpringBoot簡單的SpringBoot后端實例

    SpringBoot簡單的SpringBoot后端實例

    這篇文章主要介紹了SpringBoot簡單的SpringBoot后端實例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 基于SpringMVC入門案例及講解

    基于SpringMVC入門案例及講解

    這篇文章主要介紹了基于SpringMVC入門案例及講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring?BeanDefinition收集過程示例詳解

    Spring?BeanDefinition收集過程示例詳解

    這篇文章主要為大家介紹了Spring?BeanDefinition收集過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • idea中Java實體類怎樣生成序列化的版本號的方法

    idea中Java實體類怎樣生成序列化的版本號的方法

    這篇文章主要介紹了idea中Java實體類怎樣生成序列化的版本號的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • 解決springboot 獲取form-data里的file文件的問題

    解決springboot 獲取form-data里的file文件的問題

    這篇文章主要介紹了解決springboot 獲取form-data里的file文件的問題的相關(guān)資料,這里提供了詳細(xì)的解決步驟,需要的朋友可以參考下
    2017-07-07
  • Java生成MD5加密字符串代碼實例

    Java生成MD5加密字符串代碼實例

    這篇文章主要介紹了Java生成MD5加密字符串代碼實例,本文對MD5的作用作了一些介紹,然后給出了Java下生成MD5加密字符串的代碼示例,需要的朋友可以參考下
    2015-06-06

最新評論