Mybatis默認對二級緩存是關閉的,一級緩存默認開啟;
下面就說說為什么使用二級緩存需要注意:
二級緩存是建立在同一個namespace下的,如果對表的操作查詢可能有多個namespace,那么得到的數據就是錯誤的。
舉個簡單的例子,訂單和訂單詳情,orderMapper、orderDetailMapper、在查詢訂單詳情時我們需要把訂單信息也查詢出來,那么這個訂單詳情的信息被二級緩存在orderDetailMapper的namespace中,這個時候有人要修改訂單的基本信息,那就是在orderMapper的namespace下修改,他是不會影響到orderDetailMapper的緩存的,那么你再次查找訂單詳情時,拿到的是緩存的數據,這個數據其實已經是過時的。
根據以上,想要使用二級緩存時需要想好兩個問題:
1)對該表的操作與查詢都在同一個namespace下,其他的namespace如果有操作,就會發生數據過時。
2)對關聯表的查詢,關聯的所有表的操作都必須在同一個namespace。
總之,操作與查詢在同一個namespace下的查詢才能緩存,其他namespace下的查詢都可能出現問題。
所以對單表單工作空間要注意使用
e
