mybatis中的快取

2022-06-10 14:03:10 字數 1266 閱讀 6401

mybatis中的快取和hibernate的快取類似,也分為一級快取和二級快取;

①一級快取:為sqlsession級別的快取。預設開啟。使用同乙個sqlsession執行查詢時,會先從sqlsession的快取中去獲取資料,如果快取中不存在,再去資料庫中查詢,並將查詢結果快取到sqlsession。

特點:1) mybatis的一級快取,使用的perpetualcache類來實現。其內部是通過hashmap來儲存快取資料的。map的key值,基於namespace:sql:引數;

2) mybatis一級快取不存在自動失效,快取淘汰機制。只有當執行了dml(insert update delete)操作並提交時,才會去清空快取;

3) sqlsession關閉時,對應的一級快取失效;

配置:1)在mybatis主配置檔案中配置開啟二級快取;

"cacheenabled

" value="

true

"/>

配置二級快取

eviction:指定快取策略;

lru:最近最少使用策略;(預設規則)

fifo:先進先出;按進入順序進行移除

soft:軟引用;

weak:弱引用;

flushinterval:重新整理時間,單位為毫秒;

size:指定快取的最大儲存個數;

type:指定快取實現,當定義了快取實現方式時,可以通過該屬性配置

"lru

" flushinterval="

300000

" readonly="

false

" size="

1024

">

測試**為:

//

測試二級快取

@test

public

void

cache2test()

測試結果為:

例如:

MyBatis中的快取

mybatis作為持久化框架,提供了非常強大的快取特性。一般在提到mybatis快取的時候,指的都是二級快取。一級快取,即本地快取,缺省會啟用並且不能控制,可能會導致一些難以發現的錯誤。一 一級快取 public void testl1cache finally system.out.println...

Mybatis中的快取

title mybatis中的快取 tags 新建,模板,小書匠 想要了解mybatis中的快取機制,我們先來看什麼是快取,簡單來說,快取就是存在於記憶體中的臨時資料。那麼,我們為什麼要使用快取呢,就是為了減少與資料庫的互動次數,提高執行效率。那麼問題來了,什麼樣的資料適合存在於快取中呢 首先是經常...

mybatis中的快取

存在於記憶體中的臨時shuju 減少和資料庫的互動次數,提高效率 它指的是mybatis中sqlsession物件的快取。當我們執行查詢之後,查詢的結果同時會存入到sqlsession為我們提供的一塊區域當中。該區域的結構是乙個map結構。當我們再次查詢同樣的資料時,mybatis會先去sqlses...