正如大多數持久層框架一樣,mybatis 同樣提供了一級快取和二級快取的支援
一級快取: 基於perpetualcache 的 hashmap本地快取,其儲存作用域為session,當session flush 或 close之後,該session中的所有 cache 就將清空。
2.二級快取,如 ehcache。
3. 對於快取資料更新機制,當某乙個作用域(一級快取session/二級快取namespaces)的進行了 c/u/d 操作後,預設該作用域下所有 select 中的快取將被clear。
1package
me.gacl.test;23
import
me.gacl.domain.user;
4import
me.gacl.util.mybatisutil;
5import
org.apache.ibatis.session.sqlsession;
6import
org.junit.test;78
/**9
* @author
gacl
10* 測試一級快取
11*/
12public
class
testonelevelcache
59 }
<2、測試二級快取namespace
>
<
cache
/>
11. 對映語句檔案中的所有select語句將會被快取。package
me.gacl.test;23
import
me.gacl.domain.user;
4import
me.gacl.util.mybatisutil;
5import
org.apache.ibatis.session.sqlsession;
6import
org.apache.ibatis.session.sqlsessionfactory;
7import
org.junit.test;89
/**10
* @author
gacl
11* 測試二級快取
12*/
13public
class
testtwolevelcache
36 }
2. 對映語句檔案中的所有insert,update和delete語句會重新整理快取。
3. 快取會使用least recently used(lru,最近最少使用的)演算法來收回。
4. 快取會根據指定的時間間隔來重新整理。
5. 快取會儲存1024個物件
1. mybatis內部二級快取的配置要使用mybatis的二級快取,需要對mybatis進行配置,配置分三步
name="cacheenabled"
value="true"/>
... />
... />
"finduserbyid" parametertype="int" resultmap="user" usecache="true">
select * from users where id=#;
@before
public
void
before
()@test
public
void
test
()cache標籤常用屬性:
<cache
eviction
="fifo"
size="512"
readonly="true"/>
原理總結 mybatis
為了便於持久層操作的維護,通過編寫xml sql相關 提供靈活的資料庫訪問實現 封裝了jdbc 提供了資料庫連線池管理 提供了sql統一管理 xml 提供了重複sql語句塊的重複利用機制 提供了根據輸入引數,動態組成sql的功能,封裝了sql具體執行操作 提供了返回的結果,根據配置,對映到相應型別的...
mybatis常用總結
1.如果傳遞的單個字串的話,這樣寫 querybywherestr param str string mes 也可以寫成這樣,xml中直接引數型別直接為物件。public void delete string id delete from book where id 2.轉義符 3.like and...
Mybatis學習總結
mybatis 1.目前最主流的持久層框架為hibernate與mybatis,而且國內目前情況使用mybatis的公司比hibernate要多。2.hibernate學習門檻不低,要精通門檻更高。門檻高在怎麼設計o r對映,在效能和物件模型之間如何權衡取得平衡,以及怎樣用好hibernate快取與...