1. 程式人生 > >Mybatis之二級快取

Mybatis之二級快取

Mybatis預設對二級快取是關閉的,一級快取預設開啟;

下面就說說為什麼使用二級快取需要注意:

    二級快取是建立在同一個namespace下的,如果對錶的操作查詢可能有多個namespace,那麼得到的資料就是錯誤的。

    舉個簡單的例子,訂單和訂單詳情,orderMapper、orderDetailMapper、在查詢訂單詳情時我們需要把訂單資訊也查詢出來,那麼這個訂單詳情的資訊被二級快取在orderDetailMapper的namespace中,這個時候有人要修改訂單的基本資訊,那就是在orderMapper的namespace下修改,他是不會影響到orderDetailMapper的快取的,那麼你再次查詢訂單詳情時,拿到的是快取的資料,這個資料其實已經是過時的。

根據以上,想要使用二級快取時需要想好兩個問題:

1)對該表的操作與查詢都在同一個namespace下,其他的namespace如果有操作,就會發生資料過時。

2)對關聯表的查詢,關聯的所有表的操作都必須在同一個namespace。

總之,操作與查詢在同一個namespace下的查詢才能快取,其他namespace下的查詢都可能出現問題。

所以對單表單工作空間要注意使用。