mybatis學習總結---快取 MyBatis學習總結(七)——Mybatis快取
阿新 • • 發佈:2018-11-27
MyBatis學習總結(七)——Mybatis快取
1. mybatis快取
正如大多數持久層框架一樣,MyBatis 同樣提供了一級快取和二級快取的支援
- 一級快取: 基於PerpetualCache 的 HashMap本地快取,其儲存作用域為 Session,當 Session flush 或 close 之後,該Session中的所有 Cache 就將清空。
2. 二級快取與一級快取其機制相同,預設也是採用 PerpetualCache,HashMap儲存,不同在於其儲存作用域為 Mapper(Namespace)
3. 對於快取資料更新機制,當某一個作用域(一級快取Session/二級快取Namespaces)的進行了 C/U/D 操作後,預設該作用域下所有 select 中的快取將被clear。
2. 快取測試
2.1 同一個SqlSession進行兩次查詢
public static void sameSession() { SqlSession session = Operate.getSession(); String namespace = "com.skd.mybits.domain.UserMapper.getUser";long before = System.currentTimeMillis(); session.selectOne(namespace, 1); long after = System.currentTimeMillis(); System.out.println("第一次查詢耗時:"+ (after-before)); long before2 = System.currentTimeMillis(); session.selectOne(namespace, 1); longafter2 = System.currentTimeMillis(); System.out.println("第二次查詢耗時:"+ (after2-before2)); }
結果: