MyBatis 的二級緩存是和命名空間綁定的,所以通常情況下每一個 Mapper 映射文件都擁有 自己的二級緩存,不同 Mapper 的二級緩存互不影響。在常見的數據庫操作中,多表聯合查詢非常常見,由於關系型數據庫的設計, 使得很多時候需要關聯多個表才能獲得想要的數據。在關聯多表查詢時肯定會將該查詢放到某個命名空間下的映射文件中,這樣一個多表的查詢就會緩 存在該命名空間的二級緩存中。涉及這些表的增、刪、改操作通常不在一個映射文件中,它們 的命名空間不同, 因此當有數據變化時,多表查詢的緩存未必會被清空,這種情況下就會產生 臟數據。
在以下場景中,推薦使用二級緩存。
1. 以查詢為主的應用中,只有盡可能少的增、刪、改操作;
2. 絕大多數以單表操作存在時,由於很少存在互相關聯的情況,因此不會出現臟數據。