快取的出現目的就是減少於資料庫之間頻繁的連線操作,當資料成千上萬的時候這樣的操作會極大的浪費時間,所以快取的出現解決了這個問題。
mybatis中有一級快取和二級快取,一級快取就是本地的會話快取,其是自動開啟的,它存在於乙個sqlsession的執行中,即當sqlsession.close()時就結束了。
mybatis的核心配置檔案,可以看到我們開起了日誌配置
<?xml version="1.0" encoding="utf-8" ?>
>
resource
="db.properties"
>
properties
>
>
name
="logimpl"
value
="stdout_logging"
/>
settings
>
>
name
="com.li.pojo"
/>
typealiases
>
default
="development"
>
"development"
>
type
="jdbc"
>
transactionmanager
>
type
="pooled"
>
name
="driver"
value
="$"
/>
name
="url"
value
="$"
/>
name
="username"
value
="$"
/>
name
="password"
value
="$"
/>
datasource
>
environment
>
environments
>
>
name
="com.li.dao"
/>
>
configuration
>
我們利用乙個user來進行簡單的驗證快取
@allargsconstructor
@noargsconstructor
@data
public
class
user
public
inte***ce
<?xml version="1.0" encoding="utf-8" ?>
namespace
=>
"getuserbyid"
resulttype
="user"
>
select * from user where id=#;
select
>
"updateuser"
parametertype
="user"
>
update user set name=#,pwd=# where id=#;
update
>
>
我們現在來測試一下
@test
public
voidqq(
)
得到的結果
可以從結果看到,第一次執行的時候進行了查表,而第二次沒有,這是因為第一次查出來之後就放入了快取。
那麼什麼時候快取會發生變化呢?
1.進行了增刪改之後,因為這時快取中的資料在資料庫中是可能變化的,我們進行乙個updateuser的操作來進行驗證。
一張圖沒放下,就截了兩次
從日誌中可以看出,進行了修改操作之後,當我們再次查詢時又進行了連表操作。
2.第二種當然就是進行清楚快取的操作了
如圖所示,便是如此。
二級快取的話需要手動開啟,一共是兩步
第一步是在核心配置檔案中
name
="cacheenabled"
value
="true"
/>
namespace
=>
/>
如此就開啟了二級快取,二級快取就是說當一級快取完蛋或者說你將sqlsession關閉之後,其中的資料會放到二級快取中。
如圖,只進行了一次查表操作。
mybatis 快取(一級和二級快取)
1.快取 好處 快取的使用演示 1 sql語句或查詢條件不同 2 分屬不同sqlsession物件 3 查詢前執行clearcache 4 提交事務 2.一級快取 3.二級快取 跟 web應用中 物件作用範圍類似。cacheenabled value true flushinterval 快取重新整...
Mybatis 一級快取和二級快取
一級快取是sqlsession級別的快取 工作機制 乙個sqlsession就代表和資料庫的一次會話,在資料庫中查出的資料放在一級快取中,同乙個物件再次查詢時,會去快取中查詢,避免了再次查詢資料庫。使用 mybatis預設開啟,不需要手動設定 舉例 同乙個物件,查詢兩次,只呼叫一次sql 注 所有測...
mybatis 快取(一級和二級快取)
1.快取 好處 快取的使用演示 1 sql語句或查詢條件不同 2 分屬不同sqlsession物件 3 查詢前執行clearcache 4 提交事務 2.一級快取 3.二級快取 flushinterval 快取重新整理時間間隔,時間是毫秒,檢查是否存在過期物件 size 快取中儲存的物件個數 rea...