MyBatis 提供了一級緩存和二級緩存。要清除 MyBatis 的緩存,你需要分別清除這兩種緩存。
一級緩存是 SqlSession 級別的緩存,當你在同一個 SqlSession 中執行相同的查詢語句時,MyBatis 會優先從一級緩存中獲取結果,而不是直接從數據庫查詢。一級緩存在以下情況下會被清除:
如果你想手動清除一級緩存,可以調用 SqlSession 的 clearCache() 方法:
sqlSession.clearCache();
二級緩存是 Mapper 級別的緩存,當多個 SqlSession 執行相同的查詢語句時,MyBatis 會優先從二級緩存中獲取結果。二級緩存需要在 MyBatis 的配置文件中進行配置。要清除二級緩存,你需要獲取對應的 Mapper 實例,并調用其 clearCache() 方法:
YourMapper yourMapper = sqlSession.getMapper(YourMapper.class);
yourMapper.clearCache();
注意:在使用二級緩存時,需要確保查詢結果是只讀的,因為 MyBatis 不會自動更新二級緩存中的數據。如果查詢結果可能會被修改,建議禁用二級緩存或者在修改數據后手動清除緩存。