Mybatis中的延遲載入與立即載入

2021-09-25 07:47:44 字數 988 閱讀 2384

在開始使用mybatis中的延遲載入之前,先給出一點概念,方便理解

我們知道資料之間的關係有多種:一對一,一對多,多對一,多對多

在這之間,一對多和多對多之間需要進行延遲載入,這一點是不需要進行過多理解的

那麼,先進行一對多的延遲載入,在此之前,需要指出我們需要使用的關係模型:

乙個使用者有多個賬戶,乙個賬戶對應乙個使用者。

那麼·,開搞吧;

首先,我們建立兩個實體類之間的對映,利用association標籤

解釋一下這個association標籤,他的漢語翻譯為聯合,那我們就可以理解為為account建立了乙個user關聯。其中的property屬性指定實體類中的關聯物件,column屬性指定延遲載入時需要向方法中傳遞的引數,select指定執行延遲載入的方法。

但是光這個是不夠的,我們可以看一下mybatis的日誌

看到將所有資料都一股腦載入出來了,這顯然不是需要的,因而,我們需要在配置檔案中新增settings

<

!-- 開啟mybatis延遲載入開關--

>

"lazyloadingenabled" value=

"true"

/>

<

!-- 開啟允許懶載入 --

>

"aggressivelazyloading" value=

"false"

/>

<

/settings>

然後觀察mybatis日誌:

我們可以見到載入順序的變化,那麼說明延遲載入已實現。

Mybatis延遲載入

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

mybatis延遲載入

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

mybatis延遲載入

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