引言
MyBatis作為一款優秀的ORM框架,其緩存機制能顯著提升數據庫查詢性能。但許多開發者僅停留在“知道有緩存”的層面,對其實現原理和細節知之甚少。本文將結合可運行的代碼示例和源碼分析,手把手帶您徹底掌握MyBatis緩存機制。
一、MyBatis緩存分類
MyBatis提供兩級緩存:
-
一級緩存(Session級緩存):默認開啟,作用于SqlSession生命周期
-
二級緩存(Application級緩存):需手動配置,作用于Mapper命名空間
二、一級緩存實戰與原理
代碼示例
// 測試一級緩存
try (SqlSession session = sqlSessionFactory.openSession()) {UserMapper mapper = session.getMapper(UserMapper.class);// 第一次查詢(訪問數據庫)User user1 = mapper.selectById(1); // 第二次查詢(命中緩存)User user2 = mapper.selectById(1);System.out.println(user1 == user2); // 輸出true
}
源碼解析
-
存儲位置:
BaseExecutor
中的PerpetualCache
&