mybatis的快取機制(二級快取)

2021-09-19 11:42:15 字數 1124 閱讀 4322

mybatis提供了快取機制減輕資料庫壓力,提高資料庫效能

mybatis的快取分為兩級:一級快取、二級快取

一級快取是sqlsession級別的快取,快取的資料只在sqlsession內有效

一級快取:

mybatis的一級快取是sqlsession級別的快取,在運算元據庫的時候需要先建立sqlsession會話物件,在物件中有乙個hashmap用於儲存快取資料,此hashmap是當前會話物件私有的,別的sqlsession會話物件無法訪問。

具體流程:

1.第一次執行select完畢會將查到的資料寫入sqlsession內的hashmap中快取起來

2.第二次執行select會從快取中查資料,如果select相同切傳引數一樣,那麼就能從快取中返回資料,不用去資料庫了,從而提高了效率

注意事項:

1.如果sqlsession執行了dml操作(insert、update、delete),並commit了,那麼mybatis就會清空當前sqlsession快取中的所有快取資料,這樣可以保證快取中的存的資料永遠和資料庫中一致,避免出現髒讀

2.當乙個sqlsession結束後那麼他裡面的一級快取也就不存在了,mybatis預設是開啟一級快取,不需要配置

二級快取:

二級快取預設是沒有開啟的。需要在setting全域性引數中配置開啟二級快取

conf.xml:

預設是false:關閉二級快取

這裡配置了乙個lru快取,並每隔60秒重新整理,最大儲存512個物件,而卻返回的物件是唯讀的

若想禁用當前select語句的二級快取,新增usecache="false"修改如下:

具體流程:

1.當乙個sqlseesion執行了一次select後,在關閉此session的時候,會將查詢結果快取到二級快取

2.當另乙個sqlsession執行select時,首先會在他自己的一級快取中找,如果沒找到,就回去二級快取中找,找到了就返回,就不用去資料庫了,從而減少了資料庫壓力提高了效能 

注意事項:

關閉二級快取 Mybatis一級快取 二級快取詳講

首先,我們先看一下這個標題 查詢快取 那就說明跟增 刪 改是沒有任何關聯的,只有在查詢時,才會遇到快取,增刪改不涉及!查詢快取目前mybatis中提供了兩個,分別是 一級快取 二級快取 所以,sqlsession的快取,是屬於一級快取 那,又有什麼用呢?比如,我們現在資料庫中有兩條資料,分別是張三跟...

mybatis查詢快取之一級快取和二級快取詳細解析

一級快取是mybatis預設就幫我們開啟的,我們不需要多做配置,但是我們得知道其中原理,否則我們也不知道怎麼使用,也不知道我們到底有沒有一級快取。上面第二部分說過一級快取的作用域是同乙個sqlsession,sqlsession的作用就是建立和資料庫的會話,我們對資料庫表的增刪改查都是通過sqlse...

mybatis二級快取

配置檔案 不用配置也是預設開啟的 在sqlmapconfig.xml中 cacheenabled value true 如果不需要二級快取,可以在設定禁用二級快取 select 這樣每次都是從資料庫中讀取 在執行insert,update,delete後會重新整理快取 清空快取 可以設定不重新整理 ...