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