Mybatis延遲載入和查詢快取

2021-09-24 09:19:08 字數 1905 閱讀 4082

在全域性配置引數設定開啟延遲載入總開關

>

name

="lazyloadingenabled"

value

="true"

/>

name

="aggressivelazyloading"

value

="false"

/>

settings

>

設定項

描述允許值

預設值lazyloadingenabled

全域性性設定懶載入。如果設為『false』,則所有相關聯的都會被初始化載入。

true | false

false

aggressivelazyloading

當設定為『true』的時候,懶載入的物件可能被任何懶屬性全部載入。否則,每個屬性都按需載入

true | false

true

查詢訂單及使用者的資訊,一對一查詢。

剛開始只查詢訂單資訊

當需要使用者時呼叫 orders類中的getuser()方法執行延遲載入 ,向資料庫發出sql。

"findorderuserlistlazyloading"

resultmap

="orderuserlistlazyloading"

>

select

* from

orders

select

>

配置resultmap設定延遲載入的物件

type

="orders"

id="orderuserlistlazyloading"

>

property

="id"

column

="id"

/>

property

="userid"

column

="user_id"

/>

property

="number"

column

="number"

/>

property

="createtime"

column

="createtime"

/>

property

="note"

column

="note"

/>

property

="user"

select

= column

="user_id"

>

association

>

resultmap

>

// 五、配置延遲載入

public list

findorderuserlistlazyloading()

throws exception;

測試**:

/**

* * @description: 一對一查詢延遲載入

* @param @throws exception

* @return void

*/@test

public

void

testfindorderuserlistlazyloading()

throws exception

一對多延遲載入

一對多延遲載入的方法同一對一延遲載入,在collection標籤中配置select內容。

Mybatis延遲載入

現在有這麼乙個需求,要查詢所有的訂單,並且獲得該訂單的詳細資訊。如果一次性把所有需要的資料都請求到,那麼對伺服器和資料庫的開銷會很大,所以可以先載入訂單資訊,需要用到訂單詳情的時候再請求詳情資料。那麼就要用到mybatis的延遲載入 name lazyloadingenabled value tru...

mybatis延遲載入

舉個例子 如果查詢訂單並且關聯查詢使用者資訊。如果先查詢訂單資訊即可滿足要求,當我們需要查詢使用者資訊時再查詢使用者資訊。把對使用者資訊的按需去查詢就是延遲載入。所以延遲載入即先從單錶查詢 需要時再從關聯表去關聯查詢,大大提高資料庫效能,因為查詢單錶要比關聯查詢多張表速度要快。我們來對比一下 關聯查...

mybatis延遲載入

在mybatis中,通常會進行多表聯合查詢,但是有的時候並不會立即用到所有的聯合查詢結果,此時需要一種機制,當需要的時候再查詢,這種 按需查詢 的機制,就可以使用延遲載入來實現。延遲載入可以做到,先從單錶查詢,需要時再從關聯表關聯查詢,這樣可以大大提高資料庫的效能,因為查詢單錶要比關聯查詢多張表速度...