MyBatis 的 XML 標簽緩存機制主要涉及到兩個方面:一級緩存和二級緩存。
一級緩存是默認開啟的,它的作用范圍是 SqlSession。當在同一個 SqlSession 中執行相同的查詢語句時,MyBatis 會優先從一級緩存中獲取結果,而不是直接從數據庫查詢。這樣可以提高查詢性能,減少與數據庫的交互次數。
一級緩存的實現原理是基于 PerpetualCache 類,它是一個無界的 HashMap,用于存儲查詢結果。當執行查詢操作時,MyBatis 首先會檢查一級緩存中是否存在該查詢語句的結果,如果存在,則直接返回緩存中的結果;如果不存在,則從數據庫查詢,并將查詢結果存入一級緩存。
需要注意的是,一級緩存在以下情況下會失效:
二級緩存是可選的,需要在 MyBatis 配置文件中顯式開啟。它的作用范圍是 Mapper,可以跨越多個 SqlSession 共享緩存數據。當多個 SqlSession 執行相同的查詢語句時,MyBatis 會優先從二級緩存中獲取結果,而不是直接從數據庫查詢。這樣可以進一步提高查詢性能,減少與數據庫的交互次數。
二級緩存的實現原理是基于 Cache 接口,MyBatis 提供了多種緩存實現,如 EhCache、RedisCache 等。使用二級緩存時,需要在 MyBatis 配置文件中配置緩存實現類,并在 Mapper XML 文件中添加
需要注意的是,二級緩存在以下情況下會失效:
總之,MyBatis 的 XML 標簽緩存機制通過一級緩存和二級緩存來提高查詢性能,減少與數據庫的交互次數。在實際應用中,根據業務需求和場景選擇合適的緩存策略。