MyBatis的二級快取的設計原理

2021-09-05 09:31:13 字數 1155 閱讀 2376

1  mybatis一級快取

2 mybatis自帶的快取方式

mybatis對二級快取的支援粒度很細,它會指定某一條查詢語句是否使用二級快取。

要想使某條select查詢支援二級快取,你需要保證:

1.  mybatis支援二級快取的總開關:全域性配置變數引數   cacheenabled=true

3. 該select語句的引數 usecache=true

mybatis自身提供了豐富的,並且功能強大的二級快取的實現,它擁有一系列的cache介面裝飾者,可以滿足各種對快取操作和更新的策略。

mybatis定義了大量的cache的裝飾器來增強cache快取的功能,如下類圖所示。

對於每個cache而言,都有乙個容量限制,mybatis各供了各種策略來對cache快取的容量進行控制,以及對cache中的資料進行重新整理和置換。mybatis主要提供了以下幾個重新整理和置換策略:

lru:(least recently used),最近最少使用演算法,即如果快取中容量已經滿了,會將快取中最近做少被使用的快取記錄清除掉,然後新增新的記錄;

fifo:(first in first out),先進先出演算法,如果快取中的容量已經滿了,那麼會將最先進入快取中的資料清除掉;

scheduled:指定時間間隔清空演算法,該演算法會以指定的某乙個時間間隔將cache快取中的資料清空;

下面是spring boot + mybatis + ehcache 二級快取例項,這個快取在分布式環境當中就比較麻煩一點,需要去同步ehcache資料

並且與redis配置大同小異

參考如下 :  

MyBatis的二級快取

二級快取是sessionfactory級別的快取 跨越了兩個session 是需要手動開啟的。需求 操作mysql中資料庫seamybatis中的user表,使用二級快取查詢37號尤海的資訊 手動開啟方式 1 sqlmapconfig.xml配置檔案中新增開啟全域性快取 開啟全域性快取 select...

Mybatis的二級快取

但行好事,莫問前程cacheenabled預設是啟用的,只有在該值為true的時候,底層使用的executor才是支援二級快取的cachingexecutor。具體可參考mybatis的核心配置類org.apache.ibatis.session.configuration的newexecutor方...

mybatis二級快取

配置檔案 不用配置也是預設開啟的 在sqlmapconfig.xml中 cacheenabled value true 如果不需要二級快取,可以在設定禁用二級快取 select 這樣每次都是從資料庫中讀取 在執行insert,update,delete後會重新整理快取 清空快取 可以設定不重新整理 ...