1、概念:
MyBatis中的延遲加載,也稱為懶加載,是指在進(jìn)行表的關(guān)聯(lián)查詢時(shí),按照設(shè)置延遲規(guī)則推遲對關(guān)聯(lián)對象的select查詢。例如在進(jìn)行一對多查詢的時(shí)候,只查詢出一方,當(dāng)程序中需要多方的數(shù)據(jù)時(shí),mybatis再發(fā)出sql語句進(jìn)行查詢,這樣子延遲加載就可以的減少數(shù)據(jù)庫壓力。MyBatis 的延遲加載只是對關(guān)聯(lián)對象的查詢有遲延設(shè)置,對于主加載對象都是直接執(zhí)行查詢語句的。
2、加載時(shí)機(jī):
直接加載:執(zhí)行完對主加載對象的 select 語句,馬上執(zhí)行對關(guān)聯(lián)對象的 select 查詢。侵入式延遲: 執(zhí)行對主加載對象的查詢時(shí),不會執(zhí)行對關(guān)聯(lián)對象的查詢。但當(dāng)要訪問主加載對象的詳情屬性時(shí),就會馬上執(zhí)行關(guān)聯(lián)對象的select查詢。深度延遲: 執(zhí)行對主加載對象的查詢時(shí),不會執(zhí)行對關(guān)聯(lián)對象的查詢。訪問主加載對象的詳情時(shí)也不會執(zhí)行關(guān)聯(lián)對象的select查詢。只有當(dāng)真正訪問關(guān)聯(lián)對象的詳情時(shí),才會執(zhí)行對關(guān)聯(lián)對象的 select 查詢。
注意:延遲加載的應(yīng)用要求:關(guān)聯(lián)對象的查詢與主加載對象的查詢必須是分別進(jìn)行的select語句,不能是使用多表連接所進(jìn)行的select查詢。因?yàn)椋啾磉B接查詢,實(shí)質(zhì)是對一張表的查詢,對由多個(gè)表連接后形成的一張表的查詢。會一次性將多張表的所有信息查詢出來。
3、侵入式延遲加載:
①、Mybatis-config.xml大配置文件,首先開啟延遲加載,然后再配置侵入式加載
<!--開啟延遲加載--> <setting name="lazyLoadingEnabled" value="true"/> <!--配置侵入式延遲加載 默認(rèn)為false(深度加載) 侵入式:默認(rèn)只會執(zhí)行主加載SQL,那么當(dāng)訪問主加載對象的詳細(xì)信息時(shí)才會執(zhí)行關(guān)聯(lián)對象的SQL查詢 深度延遲:默認(rèn)只執(zhí)行主加載SQL,那么當(dāng)調(diào)用到主加載對象中關(guān)聯(lián)對象的信息時(shí)才會執(zhí)行關(guān)聯(lián)對象的SQL查詢 --> <setting name="aggressiveLazyLoading" value="true"/>
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站vcdvsql.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
分享名稱:Mybatis延遲加載的實(shí)現(xiàn)方式-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://vcdvsql.cn/article28/djgjjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、網(wǎng)站營銷、網(wǎng)站收錄、面包屑導(dǎo)航、網(wǎng)站建設(shè)、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)