Mybaits 快取設定

2021-10-01 12:20:36 字數 1254 閱讀 8597

一級快取:

mybatis 的一級快取存在於 sqlsession 的宣告週期中, 在同乙個 sqlsession 中查詢時, mybatis 會把執行的方法和引數通過演算法生成快取的鍵值, 將鍵值和查詢結果存入乙個 map 物件中. 如果同乙個 sqlsession 中執行的方法和引數完全一致, 那麼通過演算法會生成相同的鍵值, 當 map 快取物件中已經存在該鍵值時, 則會返回快取中的物件.

@test

public void testcache() finally

sqlsession = getsqlsession();

try

}```

select *

from user

where id = #

```

二級快取:

預設配置的快取效果:

flushinterval(重新整理間隔): 可以被設定為任意的正整數, 它代表乙個合理的毫秒形式的時間段

size: 可以設定為任意的正整數, 它表示要記住快取的物件數目和執行環境的可用記憶體資源數目

readonly: 唯讀. 唯讀的快取會給所有呼叫者返回快取物件的相同例項; 可讀寫的快取會通過序列化返回快取物件的拷貝

@cachenamespace

}

髒資料的產生和避免:
select u.id

u.username

r.id as "role.id"

r.name as "role.name"

from user u

inner join user_role

on user_role.user_id = u.id

inner join role r

on r.id = user_role.role_id

where u.id = #

@test

public void testcache() finally

sqlsession = getsqlsession();

try finally

sqlsession = getsqlsession();

try finally

}

參考:

[1] : mybatis從入門到精通

關於mybaits的快取

mybaits框架為了能夠更加高效的查詢資料庫中的資料,在查詢的時候設定了快取,具體是怎麼回事呢?一起來學習下吧 mybaits的快取有兩級 一級快取 快取在session 中,每個session私有,一定存在。二級快取 快取在session和資料庫中的某個位置,可以設定,屬於所以session的公...

mybaits連線oracle不設定資料庫的疑惑

oracle使用者與表空間關係 使用者 商家 表 商品 表空間 倉庫 1.1個商家能有很多商品,1個商品只能屬於乙個商家 2.1個商品可以放到倉庫a,也可以放到倉庫b,但不能同時放入a和b 3.倉庫不屬於任何商家 4.商家都有乙個預設的倉庫,如果不指定具體倉庫,商品則放到預設的倉庫中 所以我有個誤區...

mysql 快取設定 mysql快取設定

伺服器端的設定 mysql優化首先要知道mysql快取是如何工作以及如何設定,下面是我從別人部落格上覆制過來了,初學者。mysql每個表都可以表示為磁碟上的乙個檔案,必須先開啟,後讀取。為了加快從檔案中讀取資料的過程,mysqld 對這些開啟檔案進行了快取,其最大數目由 etc mysqld.con...