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

2021-10-10 15:45:41 字數 2359 閱讀 7769

mybatis快取分為一級快取、二級快取。mybatis一級快取預設是開啟的;二級快取全域性開關預設也是開啟的,但需要配置cachenamespace才可生效!

以mybatis-plus為例

mybatis-plus

: configuration

:log-impl

: org.apache.ibatis.logging.slf4j.slf4jimpl

default-statement-timeout

:300

# mybatis二級快取全域性開關

cache-enabled

:true

# mybatis一級快取作用域(session、statement)

local-cache-scope

: session

1.快取模式為唯讀模式,返回物件本身而非副本;

2.無法禁用,但可通過local-cache-scope: statement調整作用範圍;作用域為statement「等效」於禁用(乙個statement可包含多個sql,此時無法完全禁用)。1.快取模式預設為讀寫模式,返回物件副本(物件序列化),可設定readwrite屬性進行調整。

@cachenamespace

(flushinterval =

600000

, size =

4096

, readwrite =

true

)

2.可禁用
mybatis-plus

:configuration

:# mybatis二級快取全域性開關

cache-enabled

:false

快取預設實現類:org.apache.ibatis.cache.impl.perpetualcache

3.自動重新整理快取

同一namespace下修改、刪除資料時,快取自動重新整理。重新整理其它namespace下快取,使用@cachenamespaceref註解。

4.手動重新整理快取

import com.example.demo.entity.commparamdefentity;

import org.apache.ibatis.annotations.options;

import org.apache.ibatis.annotations.select;

/** * @author ouruyi

*/public

inte***ce

extends

mybatis-plus

:configuration

:# 此處為mybatis-plus通過system.out輸出日誌到控制台,影響效能(禁用可提公升數倍)

log-impl

: org.apache.ibatis.logging.stdout.stdoutimpl

改為:

mybatis-plus

:configuration

:log-impl

: org.apache.ibatis.logging.slf4j.slf4jimpl

druid

:filters

: stat,config

min-idle:10

max-active

:100

max-pool-prepared-statement-per-connection-size:20

min-evictable-idle-time-millis

:300000

initial-size:10

max-wait

:60000

time-between-eviction-runs-millis

:120000

pool-prepared-statements

:true

# 高併發效能低

test-on-borrow

:false

test-on-return

:false

test-while-idle

:true

# 持活,檢測間隔預設1分鐘(不宜超過3分鐘,華為防火牆跨網段切斷空閒連線時限3分鐘)

keep-alive

:false

validation-query

: select 'x' from dual

# 校驗超時1秒

validation-query-timeout

:1

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

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

mybatis一級快取 二級快取

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

Mybatis 一級快取 二級快取

快取分類 一級快取 事務範圍 快取只能被當前事務訪問。快取的生命週期 依賴於事務的生命週期當事務結束時,快取也就結束生命週期。在此範圍下,快取的介質是記憶體。二級快取 程序範圍 快取被程序內的所有事務共享。這些事務有 可能是併發訪問快取,因此必須對快取採取必要的事務隔離機制。快取的生命週期依賴於程序...