mybatis 一級快取和二級快取 配置使用

2021-08-28 02:28:22 字數 1228 閱讀 4791

mybatis提供查詢快取,用於減輕資料壓力,提高資料庫效能。

mybaits提供一級快取,和二級快取。

同乙個sqlsession裡面存在,快取用map儲存:

key:sqlsession.hashcode+statementid+sql            value:查詢出來的物件。

一級快取:

第一次發起查詢使用者id為1的使用者資訊,先去找快取中是否有id為1的使用者資訊,如果沒有,從資料庫查詢使用者資訊。

得到使用者資訊,將使用者資訊儲存到一級快取中。 

如果sqlsession去執行commit操作(執行插入、更新、刪除),清空sqlsession中的一級快取,這樣做的目的為了讓快取中儲存的是最新的資訊,避免髒讀。

第二次發起查詢使用者id為1的使用者資訊,先去找快取中是否有id為1的使用者資訊,快取中有,直接從快取中獲取使用者資訊。

一級快取的應用:

正式開發,是將mybatis和spring進行整合開發,事務控制在service中。

service=#。其實之前快取資料並未清除,只是在快取資料中未找到相同sql,才從資料庫查詢資料。

2、呼叫sqlsession.clearcache(),問題解決。

sqlsession1去查詢使用者id為1的使用者資訊,查詢到使用者資訊會將查詢資料儲存到二級快取中。

sqlsession2去查詢使用者id為1的使用者資訊,去快取中找是否存在資料,如果存在直接從快取中取出資料。

開啟二級快取:

1、在mybatis-config.xml 中配置二級快取的總開關  "cacheenabled" value="true"/>

如果這樣配置的話,很多其他的配置就會被預設進行,如:

可以在開啟二級快取時候,手動配置一些屬性

各個屬性意義如下:

注意:實體類或封裝物件需要實現serializable;在新的sqlsession物件,使用二級快取中的資料的時候,需要先將前面的sqlsession物件關閉,資料才會進入二級快取

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

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

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

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

mybatis 快取(一級和二級快取)

1.快取 好處 快取的使用演示 1 sql語句或查詢條件不同 2 分屬不同sqlsession物件 3 查詢前執行clearcache 4 提交事務 2.一級快取 3.二級快取 跟 web應用中 物件作用範圍類似。cacheenabled value true flushinterval 快取重新整...