mybatis緩存
- MyBatis包含一個非常強大的查詢緩存特性,它可以非常友善地定制和配置緩存。緩存可以極大的提升查詢效率。
-
MyBatis系統中預設定義了兩級緩存:
一級緩存和二級緩存
- 預設情況下,隻有一級緩存開啟。(SqlSession級别的緩存,也稱為本地緩存)
- 二級緩存需要手動開啟和配置,他是基于namespace級别的緩存。
- 為了提高擴充性,MyBatis定義了緩存接口Cache。我們可以通過實作Cache接口來自定義二級緩存
一級緩存失效的四種情況
- 沒有使用到目前的一級緩存,效果就是,還需要再向資料庫中發起一次查詢請求!sqlSession不同。
- sqlSession相同,查詢條件不同
- User user = mapper.queryUserById(1);
- User user2 = mapper2.queryUserById(2);
- sqlSession相同,兩次查詢之間執行了增删改操作!
- sqlSession相同,手動清除一級緩存
- session.clearCache(); //手動清除緩存
小結
- 隻要開啟了二級緩存,我們在同一個Mapper中的查詢,可以在二級緩存中拿到資料
- 查出的資料都會被預設先放在一級緩存中
- 隻有會話送出或者關閉以後,一級緩存中的資料才會轉到二級緩存中