Mybatis默認對二級緩存是關閉的,一級緩存默認開啓;緩存
下面就說說爲何使用二級緩存須要注意:app
二級緩存是創建在同一個namespace下的,若是對錶的操做查詢可能有多個namespace,那麼獲得的數據就是錯誤的。spa
舉個簡單的例子,訂單和訂單詳情,orderMapper、orderDetailMapper、在查詢訂單詳情時咱們須要把訂單信息也查詢出來,那麼這個訂單詳情的信息被二級緩存在orderDetailMapper的namespace中,這個時候有人要修改訂單的基本信息,那就是在orderMapper的namespace下修改,他是不會影響到orderDetailMapper的緩存的,那麼你再次查找訂單詳情時,拿到的是緩存的數據,這個數據其實已是過期的。數據
根據以上,想要使用二級緩存時須要想好兩個問題:查詢
1)對該表的操做與查詢都在同一個namespace下,其餘的namespace若是有操做,就會發生數據過期。co
2)對關聯表的查詢,關聯的全部表的操做都必須在同一個namespace。錯誤
總之,操做與查詢在同一個namespace下的查詢才能緩存,其餘namespace下的查詢均可能出現問題。bat