MyBatis 一級快取和二級快取(六)

2021-09-25 23:56:36 字數 1351 閱讀 2145

1. 一級快取 :同乙個sqlsession物件

mybatis預設開啟一級快取,如果用同樣的sqlsession物件查詢相同的資料,

則只會在第一次 查詢時 向資料庫傳送sql語句,並將查詢的結果 放入到sqlsession中(作為快取存在);

後續再次查詢該同樣的物件時,則直接從快取中查詢該物件即可(即省略了資料庫的訪問)    

2. 二級快取

(1)開啟

mybatis預設情況沒有開啟二級快取,需要手工開啟。

a.conf.xml

&&觸發將物件寫入二級快取的時機:sqlsession物件的close()方法

(2)禁用 :select標籤中usecache="false"

(3)清理:a.與清理一級快取的方法相同

commit(); (一般執行增刪改時 會清理掉快取;設計的原因 是為了防止髒資料)

在二級快取中,commit()不能是查詢自身的commit。

commit會清理一級和二級快取;但是 清理二級快取時,不能是查詢自身的commit;

b. 在select標籤中 增加屬性 flushcache="true"

命中率:

1:zs :0%  

2:    50%

3:   2/3    0.666

4:  3/4     0.75

(4)三方提供的二級快取:

ehcache、memcache

要想整合三方提供的二級快取 (或者自定義二級快取),必須實現org.apache.ibatis.cache.cache介面,該介面的預設實現類是perpetualcache

例:整合ehcache二級快取:

a.jar包

ehcache-core.jar

mybatis-ehcache.jar

slf4j-api.jar

b.編寫ehcache配置檔案 ehcache.xml

ehcache.xml檔案內容: 

實現步驟:

a.  準備jar包:mybatis-generator-core.jar、mybatis.jar、ojdbc.jar

b.  逆向工程的配置檔案generator.xml

c.  執行

關閉二級快取 Mybatis一級快取 二級快取詳講

首先,我們先看一下這個標題 查詢快取 那就說明跟增 刪 改是沒有任何關聯的,只有在查詢時,才會遇到快取,增刪改不涉及!查詢快取目前mybatis中提供了兩個,分別是 一級快取 二級快取 所以,sqlsession的快取,是屬於一級快取 那,又有什麼用呢?比如,我們現在資料庫中有兩條資料,分別是張三跟...

mybatis查詢快取之一級快取和二級快取詳細解析

一級快取是mybatis預設就幫我們開啟的,我們不需要多做配置,但是我們得知道其中原理,否則我們也不知道怎麼使用,也不知道我們到底有沒有一級快取。上面第二部分說過一級快取的作用域是同乙個sqlsession,sqlsession的作用就是建立和資料庫的會話,我們對資料庫表的增刪改查都是通過sqlse...

mybatis 快取(一級和二級快取)

1.快取 好處 快取的使用演示 1 sql語句或查詢條件不同 2 分屬不同sqlsession物件 3 查詢前執行clearcache 4 提交事務 2.一級快取 3.二級快取 跟 web應用中 物件作用範圍類似。cacheenabled value true flushinterval 快取重新整...