课时11:禁用清理二级缓存,以及整合Ehcache缓存
Posted thishbz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了课时11:禁用清理二级缓存,以及整合Ehcache缓存相关的知识,希望对你有一定的参考价值。
<select id="selectStudentById" resultType="student" parameterType="Integer" useCache="false"> select * from student where stuno=#{stuno} </select>
.2).清理:与清理缓存一级缓存相同
1 SqlSession.close()才会记录成缓存;(执行增删改会将缓存清除了;设计的原因 是为了脏数据的产生)
<!-- https://mvnrepository.com/artifact/net.sf.ehcache/ehcache-core --> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId> <version>2.6.11</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis.caches/mybatis-ehcache --> <dependency> <groupId>org.mybatis.caches</groupId> <artifactId>mybatis-ehcache</artifactId> <version>1.0.3</version> </dependency> <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency>
2.编写ehcache.xml配置文件
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false"> <!-- 当二级缓存的对象 超过内存限制时 (缓存对象个数>maxElementsInMemory)当存入的硬盘文件--> <diskStore path="E:uEhcache"/> <!-- maxElementsInMemory:设置在内存中缓存 对象的个数 maxElementsOnDisk:设置在硬盘中缓存 对象的个数 overflowToDisk:设置缓存是否 永久不过期 diskPersistent:当内存中缓存的对象个数 超过maxElementsInMemory的时候 是否转移到硬盘 timeToIdleSeconds:当两次访问 超过该值的时候,将缓存对象失效 timeToLiveSeconds:一个缓存对象,最多存放的时间(生命周期 ) diskExpiryThreadIntervalSeconds:每隔多长时间 通过一个线程 来清理硬盘中的缓存 memoryStoreEvictionPolicy:当缓存对象的最大值时 处理的策略:LRU 这个值是 删除最少使用 --> <defaultCache eternal="false" maxElementsOnDisk="1000000" maxElementsInMemory="1000" overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="100" timeToLiveSeconds="100" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU"> </defaultCache> </ehcache>
3.启二级缓存 在主配置中
<!-- 开启二级缓存--> <setting name="cacheEnabled" value="true"/>
4.在mapper编写cache标签
<!-- 声明开启--> <cache type="org.mybatis.caches.ehcache.EhcacheCache"> <!-- 如果编写了下面的值 会覆盖全局配置的那个ehcache.xml--> <!-- <property name="maxElementsInMemory" value="2000"/>--> <!-- <property name="overflowToDisk" value="true"/>--> </cache>
5.测试与mybatis自带的二级缓存一样的
以上是关于课时11:禁用清理二级缓存,以及整合Ehcache缓存的主要内容,如果未能解决你的问题,请参考以下文章
架构实战篇:MyBatis一级二级,并整合ehcache分布式缓存的使用,附演示实例