04 Mybatis 延遲載入 快取 註解開發

2021-10-05 05:36:14 字數 2396 閱讀 8438

目錄

延遲載入

延遲載入

立即載入

一對一開啟步驟

注意事項

原理(個人理解)

一對多 快取

適用條件

可以用不可以用

一級快取 概念

觸發清空快取的條件

二級快取 概念

使用步驟

注意事項

註解開發

注意細節

自定義對映關係

results註解

多表查詢

一對一一對多

延遲載入

二級快取

開啟方法

在真正使用資料時才發起查詢, 不用的時候不查詢. 按需載入(懶載入)

常用於一對多和多對多

不管用不用, 都一併查詢

多用於一對一和多對一

在主配置檔案中新增如下**

在對映配置檔案裡的association標籤中新增select標籤, 值為: cn.lq.dao.daoaccount.findbyid

findbyid

必須使用此方法, 因為發起第二次查詢時, 使用的引數是uid

是在主配置檔案中開啟延遲載入, 但並不意味著所有的方法都會自動應用延遲載入, 還需要進行額外的配置(新增select屬性 修改sql語句)

select屬性中會指明發起二次查詢時需要用到的方法(findbyid), column屬性則指明了方法需要用的引數(uid), 這個引數是第一次查詢時查出來的結果

方法同上

資料經常被查詢且不經常發生改變

資料的正確與否對最終結果影響不大

資料經常改變

資料的正確與否對最終結果影響很大

他指的是mybatis中sqlsession中的快取

當我們執行查詢之後, 查詢的結果會同時存入到sqlsession為我們提供的一片區域中. 該區域的結構是乙個map. 當我們再次查詢同樣的資料時, mybatis會先去sqlsession中查詢

clearcache() : 清除sqlsession中的快取

當呼叫sqlsession的修改 新增 刪除 commit close等方法時, 都會清空一級快取

二級快取是在sqlsessionfactory中, 可以多個sqlsession共享共享這片區域

讓mybatis框架支援二級快取(設定主配置檔案)

可以省略, 因為cacheenabled預設是開啟的(值為true)

讓對映配置檔案支援二級快取(設定對映配置檔案)

讓當前操作支援二級快取(在select標籤中設定)

在select標籤中新增屬性usecache="true"即可

二級快取中存的不是物件, 而是"散裝"的資料, sqlsession拿到資料之後會根據自己的需要再組裝成物件

註解和配置檔案是不可以同時使用的, 即 不能即給方法新增註解, 同時又配置方法的對映配置檔案

/**

* 查詢所有

* * @return

*/@select("select * from user")

/* * 自定義對映關係

* results.id : 如果別的方法也想使用這個對映關係, 就需要用到這個id, 在方法前新增註解: @resultmap("mapuser")

* result.id : 值為true代表這個屬性是主鍵

* */

@results(id = "mapuser", value = )

public listfindall();

/**

* 查詢所有

* * @return

*/@select("select * from account")

/* * 一對一

* one : 一對一(或多對一), 對應的還有many,一對多(多對多)

* select : 要執行的方法的位置

* fetchtype : 載入方式

* eager : 立即載入

* lazy : 延遲載入

* */

@results(id = "mapaccount", value = )

public listfindall();

方法和上面一樣

不需要在主配置檔案中單獨設定開關, 直接給方法加上相應的註解就可以直接使用

不需要在主配置檔案中單獨設定了, 因為二級快取的總開關預設是開啟的, 只需要在相應的dao介面上新增註解即可

在介面上面(注意 ! ! 是介面上面, 不是方法上面)新增註解: @cachenamespace(blocking = true)

mybatis延遲載入,快取

延遲載入又叫懶載入,也叫按需載入。也就是說先載入主資訊,在需要的時候,再去載入從資訊。在mybatis中,resultmap標籤 的association標籤和collection標籤具有延遲載入的功能。1.讀取配置檔案 inputstream is resources.getresourceass...

04 Mybatis之增刪改

int addblog blog blog insert into blog id,title,author,create time,views values null,很多情況下我們需要直接獲取新增資料的id,但同時不想再執行一條select語句,這時我們可以使用自動生成主鍵來直接獲取到id in...

Mybatis延遲載入和查詢快取

在全域性配置引數設定開啟延遲載入總開關 name lazyloadingenabled value true name aggressivelazyloading value false settings 設定項 描述允許值 預設值lazyloadingenabled 全域性性設定懶載入。如果設為 ...