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