mybatis中的一級快取和二級快取

2021-10-07 08:52:14 字數 2906 閱讀 8476

快取的出現目的就是減少於資料庫之間頻繁的連線操作,當資料成千上萬的時候這樣的操作會極大的浪費時間,所以快取的出現解決了這個問題。

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...