mybatis一級快取二級快取

2021-09-26 15:36:18 字數 463 閱讀 1579

前面我們說到,spring和mybatis整合時, 每次查詢之後都要進行關閉sqlsession,關閉之後資料被清空。所以spring整合之後,如果沒有事務,一級快取是沒有意義的。那麼如果開啟二級快取,關閉sqlsession後,會把該sqlsession一級快取中的資料新增到namespace的二級快取中。這樣,快取在sqlsession關閉之後依然存在。

但不能濫用二級快取,二級快取也有很多弊端,從mybatis預設二級快取是關閉的就可以看出來。

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

舉個簡單的例子:

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

1)對該錶的操作與查詢都在同乙個namespace下,其他的namespace如果有操作,就會發生資料的髒讀。

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

mybatis快取 一級快取,二級快取

什麼是快取 為什麼使用快取 適用於快取的資料 二級快取的使用步驟 在主配置檔案配置 name cacheenabled value ture 讓當前的操作支援快取 在對映檔案中 select 標籤中配置 在select標籤中 新增乙個屬性 userscache true 先建立出乙個sqlsessi...

Mybatis快取(一級快取 二級快取)

mybatis快取分為一級快取 二級快取。mybatis一級快取預設是開啟的 二級快取全域性開關預設也是開啟的,但需要配置cachenamespace才可生效!以mybatis plus為例 mybatis plus configuration log impl org.apache.ibatis....

mybatis一級快取 二級快取

一級快取基於sqlsession,是預設開啟的,在運算元據庫時需要構造sqlsession物件,在物件中有乙個hashmap用於儲存快取資料。不同的sqlsession之間快取資料區域是互相不影響的。一級快取的作用域是sqlsession範圍的,當在同乙個sqlsession中執行兩次相同的sql語...