Posted on 2014-08-11 18:22
yuhaibo736 阅读(2723)
评论(0) 编辑 收藏
在IBATIS中,框架内置了对OSCache的支持,如果我们想使用EHCache,则需要通过我们手工实现来完成二级缓存的功能机制。
在mybatis中,开发组织只提供了一些默认的二级缓存实现的机制,并没有直接内置的支持OSCache和EHCache等二级缓存机制,而是作为一个集成jar包来提供二级缓存的实现,在官方网站上我们可以找到mybatis-ehcache-1.0.1-bundle.zip,mybatis-oscache-1.0.1-bundle.zip等ehcache和oscache提供二级缓存的独立工具包. 这里我就拿oscache在mybatis中的使用来举例说明:
1. 将mybatis-oscache-1.0.1-bundle.zip中涉及到的jar包放入到classpath路径下
maven下可以这样配置
<dependencies>
...
<dependency>
<groupId>org.mybatis.caches</groupId>
<artifactId>mybatis-oscache</artifactId>
<version>1.0.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>opensymphony</groupId>
<artifactId>oscache</artifactId>
<version>2.4</version>
<exclusions>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
</dependency>
...
</dependencies>
2. 在mapper文件中的配置如下:
<mapper namespace="org.test.AuthMapper" >
<cache type="org.mybatis.caches.oscache.OSCache"/>
</mapper>
注意下面两点
(a)在<select id="getAuth" parameterType="Map" resultType="Auth" useCache="false">中使用useCache="false"或useCache="true"来决定是否使用二级缓存。
(b)在增删改中<insert id="insertAuth" parameterType="Auth" flushCache="true">使用flushCache="true"或flushCache="flase"来决定对这些进行操作后清空该xml文件中所有查询语句的二级缓存。
3. 在src目录下创建一个oscache.properties的属性文件,在里面指定缓存的各种属性的设置:
cache.memory=true
cache.path=c:\\myapp\\cache
cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener
cache.persistence.overflow.only=true
cache.capacity=100000