一 一級緩存
在mybatis
中一級緩存是自動啟動的满粗,不需要我們手動開啟,也是sqlSession
級別的緩存,當(dāng)sqlSession
關(guān)閉后,緩存也將被清空;
二 二級緩存
在mybatis
中盅藻,二級緩存需要我們手動開啟,二級緩存和一級緩存最大的區(qū)別就是二級緩存的范圍要比一級緩存大炉擅,二級緩存是namespace
級別的緩存快鱼,即多個mapper
如果它們的namespace
相同那么它們可以共享一個緩存止潮。
使用步驟:
- 在
mybatis.xml
中開啟二級緩存
<!--
緩存配置
-->
<setting name="cacheEnable" value="true"/>
- 在
mapper.xml
中配置cache
標(biāo)簽
<cache/>
- 需要緩存的
pojo
類需要實(shí)現(xiàn)序列化接口 - 測試
statement
的兩個屬性:
- useCache:是否使用緩存(默認(rèn)是true)
- flushCache:刷新緩存,即每次執(zhí)行
sql
后是否刷新緩存(清空)橘沥,在執(zhí)行update痢艺、insert、delete
等操作如果沒有刷新還粗可能就會帶來臟數(shù)據(jù)国撵。
缺陷:
- 在執(zhí)行
commit()
時,緩存會被清空 -
mybatis
二級緩存只是將數(shù)據(jù)簡單的放入到內(nèi)存中玻墅,安全性不高
三 EnCache 緩存
EnCache
是一個純java
的緩存的框架澳厢,是一種廣泛使用的分布式緩存框都。
使用步驟:
- 導(dǎo)入相關(guān)依賴
<!--緩存整合-->
<dependency>
<groupId>org.ehcache.modules</groupId>
<artifactId>ehcache-core</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.mybatis.caches</groupId>
<artifactId>mybatis-ehcache</artifactId>
<version>1.1.0</version>
</dependency>
- 引入緩存配置文件
ehcache.xml
- 在需要緩存的
mapper.xml
中導(dǎo)入配置 - 測試
demo(根據(jù)id查用用戶信息)_10encache