MyBatis框架一級快取與二級快取

2022-08-31 08:36:08 字數 2309 閱讀 7314

1、該級快取預設開啟,不能關閉;

2、該級快取為sqlsession級別的快取,也稱為本地快取;

3、以下4種情況將會導致該級快取失效:

a、在不同sqlsession中查詢資料;

public

class

test

catch

(ioexception e) }}

執行結果:同乙個sqlsession中快取成功,不同的sqlsession快取失效

b、相同sqlsession中查詢資料,但查詢條件不同

public

class

test

catch

(ioexception e) }}

執行結果:

c、相同sqlsession中查詢資料,但兩次查詢之間執行了增刪改操作

public

class

test

catch

(ioexception e) }}

執行結果:

d、相同sqlsession中查詢資料,但第二次查詢前,程式呼叫sqlsession物件clearcache()方法手動清除了一級快取

public

class

test

catch

(ioexception e) }}

執行結果:

1、該級快取預設不開啟,但如果使用二級快取需要在每個xml對映檔案中新增

以配置該級快取(相應實體類要序列化)。二級快取可以通過在全域性配置檔案配置setting標籤來關閉該級快取。

​ 如果這樣配置的話,很多其他的配置就會被預設進行,如:

可以在開啟二級快取時候,手動配置一些屬性

各個屬性意義如下:

2

、該級快取為namespace級別的快取

3、工作機制:通過sqlsession查詢資料,這些資料將會放到當前會話的一級快取中;如果當前會話關閉,則一級快取中的資料會被儲存到二級快取中,此後新的sqlsession將從二級快取中查詢資料;

public

class

test

catch

(ioexception e) }}

執行結果:

4、select標籤的usecache屬性用於設定是否使用二級快取;insert、update、delete或select標籤均有flushcache屬性,其中增刪改預設true,即sql執行以後,會同時清空一級和二級快取,查詢預設false。

public

class

test

catch

(ioexception e) }}

執行結果:

。為了提公升查詢效率,提高使用者體驗,mybatis提供了資料快取支援,依據資料快取的有效範圍預設定義了一級快取和二級快取

Mybatis一級快取與二級快取

正如大多數持久層框架一樣,mybatis 同樣提供了一級快取和二級快取的支援 一級快取 基於perpetualcache 的 hashmap本地快取,其儲存作用域為session,當session flush或close之後,該session中的所有 cache 就將清空。3.對於快取資料更新機制,...

Mybatis 一級快取與二級快取

一級快取 1 使用範圍 從sqlsession會話開始到結束 2 使用 預設開啟,無法關閉 3 測試使用 需要開啟日誌觀察資料庫的連線情況 public static void maintest result true,將結果集列印,可以看出兩次結果集列印之間是沒有再做資料庫連線的 4 快取失效的4...

mybatis框架一級和二級快取

因為有些時候查詢資料的頻率很高,很耗費資料庫資源,所有常常把變動不大且訪問率高的資料放在乙個快取容器裡,從而緩解資料庫壓力。存在時間 sqlsession類例項物件存在時,一級快取一直存在,在這期間除非了修改,新增,刪除,執行commit,close,flush clearcache時,快取才會被清...