一級快取:
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...