mybatis中的緩存

一、什麼是緩存、使用緩存的目的以及場合
緩存:簡單來說,就是存在於內存中的臨時數據
使用緩存的目的:減少和數據庫交互的次數,提高性能
使用場合:
1、某數據經常被查詢
2、數據的正確性與否對最終的結果影響不大
切記:當對某個數據的正確性要求較高時或者是經常改變的數據,不建議使用緩存

二、mybatis中的一級緩存
mybatis一級緩存的作用域是同一個SqlSession,在同一個sqlSession中兩次執行相同的sql語句,第一次執行完畢會將數據庫中查詢的數據寫到緩存(內存),第二次會從緩存中獲取數據將不再從數據庫查詢,從而提高查詢效率。當一個sqlSession結束後該sqlSession中的一級緩存也就不存在了。mybatis默認開啓一級緩存。如果 sqlSession 去執行 commit 操作(執行插入、更新、刪除)或者close()方法或sqlSession.clearCache()方法,會清空 SqlSession 中的一級緩存。如下是一級緩存的示意圖:
在一級緩存這裏插入圖片描述
三、二級緩存
1、二級緩存指的是Mybatis中SqlSessionFactory對象的緩存。由同一個SqlSessionFactory對象創建的SqlSession共享其緩存。示意圖如下:
在這裏插入圖片描述
2、二級緩存的配置
第一步:在 SqlMapConfig.xml 文件開啓二級緩存
在這裏插入圖片描述
第二步:配置相關的 Mapper 映射文件
在這裏插入圖片描述
第三步:配置 statement 上面的 useCache 屬性

注意事項:pojo對象要實現序列化和反序列化接口
二級緩存需要查詢結果映射的pojo對象實現java.io.Serializable接口實現序列化和反序列化操作,注意如果存在父類、成員pojo都需要實現序列化接口。

發佈了16 篇原創文章 · 獲贊 8 · 訪問量 9810
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章