Mybatis延時載入

2021-09-02 17:14:03 字數 2546 閱讀 8577

一、什麼是延遲載入

resultmap可實現高階對映(使用association、collection實現一對一及一對多對映),association、collection具備延遲載入功能。

需求:如果查詢訂單並且關聯查詢使用者資訊。如果先查詢訂單資訊即可滿足要求,當我們需要查詢使用者資訊時再查詢使用者資訊。把對使用者資訊的按需去查詢就是延遲載入。

延遲載入:先從單錶查詢,需要時再從關聯表去關聯查詢,大大提高資料庫

效能,因為查詢單錶要比關聯查詢多張表速度要快。

二、使用association實現延遲載入

1、需求:查詢訂單並且關聯查詢使用者資訊

1)  只查詢訂單資訊

select * from orders

在查詢訂單的statement中使用association去延遲載入(執行)下邊的statement。

[html]view plain

copy

print?

<

select

id="findordersuserlazyloading"

resultmap="orderuserlazyloadingresultmap"

>

select * from orders  

select

>

select * from orders

resultmap怎麼寫,看下面的3。

2)  關聯查詢使用者資訊

通過上邊查詢到的訂單資訊中user_id去關聯查詢使用者資訊

[html]view plain

copy

print?

<

select

id="finduserbyid"

resulttype="user"

parametertype="int"

>

select * from user where id=#  

select

>

select * from user where id=#

3)  執行思路:

上邊先去執行findordersuserlazyloading,當需要的時候再去執行finduserbyid,通過resultmap的定義將延遲載入執行配置起來。

3、延遲載入的resultmap

[html]view plain

copy

print?

<

resultmap

type="cn.itcast.mybatis.po.orders"

id="orderuserlazyloadingresultmap"

>

<

idcolumn="id"

property="id"

/>

<

result

column="user_id"

property="userid"

/>

<

result

column="number"

property="number"

/>

<

result

column="createtime"

property="createtime"

/>

<

result

column="note"

property="note"

/>

使用association

中是select

指定延遲載入去執行的

statement的id

。 4、開啟延遲載入開關

[html]view plain

copy

print?

<

settings

>

<

setting

name="lazyloadingenabled"

value="true"

/>

<

setting

name="aggressivelazyloading"

value="false"

/>

settings

>

aggressivelazyloading:預設為true。當設定為true時,懶載入的物件可能被任何懶屬性全部載入;否則,每個屬性按需載入。

三、使用collection實現延遲載入

同理。四、思考總結

1.不使用mybatis提供的association及collection中的延遲載入功能,如何實現延遲載入?

實現思路:

1)  查詢訂單列表  2)根據使用者id查詢使用者資訊

2.總結

使用延遲載入方法,先去查詢簡單的sql(最好單錶,也可關聯查詢),再去按需載入關聯查詢的其他資訊。

DLL 延時載入

1.exe載入多個dll時,初始化可能會比較慢 2.exe載入老版本dll時,如果沒有相應的匯出函式,exe可以做相應處理後繼續執行。侷限性1 匯出全域性變數不能延遲。2 kernel32.dll 不能延遲,loadlibrary and getprocaddress 3 不能在dllmain中呼叫...

延時載入(lazy load)

1.什麼是延時載入?相關背景 當專案中的頁面需要載入大量的時,如果不進行相關的優化處理,顯然頁面的效能和對使用者的體驗是非常不友好的。如果3s還沒有載入完成,使用者很可能直接關掉你的頁面。優化的方式有很多,首先從源頭來講,可以對載入的資訊進行優化處理,精簡減少冗餘。和 延時載入。定義 延時載入 即 ...

Android 中載入延時載入動畫

我們現在應用程式載入之前一般都有splash。我們今天就用乙個例項來給大家講述一下splash。在應用程式載入之前一般都有splash。源 如下 package com.easyway.splash import com.easyway.splash.r import android.content...