Mybatis總結(7) Mybatis快取

2021-08-14 13:57:41 字數 2153 閱讀 8037

正如大多數持久層框架一樣,mybatis 同樣提供了一級快取二級快取的支援

一級快取: 基於perpetualcache 的 hashmap本地快取,其儲存作用域為session,當session flush 或 close之後,該session中的所有 cache 就將清空

2.二級快取,如 ehcache。

3. 對於快取資料更新機制,當某乙個作用域(一級快取session/二級快取namespaces)的進行了 c/u/d 操作後,預設該作用域下所有 select 中的快取將被clear。

1

package

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 }

<

namespace

>

<

cache

/>

2、測試二級快取

1

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 }

1. 對映語句檔案中的所有select語句將會被快取。

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快取與...