MyBatis 緩存機制
Mybatis 有兩級緩存:
一級緩存:
也稱為本地緩存,SqlSession級別的緩存。一級緩存是一直開啟的;
與數(shù)據(jù)庫同一次會話期間查詢到的數(shù)據(jù)會放在本地緩存中,以后如果需要獲取相同的數(shù)據(jù),直接從緩存中拿,沒必要再去查詢數(shù)據(jù)庫
一級緩存失效情況:
1、SqlSession 不同
2、SqlSession 相同,查詢條件不同
3、SqlSession 相同,兩次查詢之間執(zhí)行了增刪改操作
4、SqlSession 相同,手動清除了一級緩存
二級緩存:
全局緩存,namespace 級別的緩存,一個 namespace 對應(yīng)一個二級緩存
工作機制:
1、一個會話,查詢一條數(shù)據(jù),這個數(shù)據(jù)就會被放在一級緩存中
2、如果緩存關(guān)閉,一級緩存中的數(shù)據(jù)會被保存到二級緩存中。新的會話查詢信息,就可以參照二級緩存中的內(nèi)容
3、不同 namespace 查出的數(shù)據(jù)會被放在自己對應(yīng)的緩存中
注意:數(shù)據(jù)從二級緩存中獲取
查出的數(shù)據(jù)會被默認先放在一級緩存中,只有會話提交或者關(guān)閉后,一級緩存中的數(shù)據(jù)才會提交到二級緩存中
使用:
1、開啟全局緩存配置:cacheEnabled設(shè)為 true
2、去 mapper.xml 中配置 <cache></cache>
3、我們的 POJO 需要實現(xiàn)序列化接口

浙公網(wǎng)安備 33010602011771號