Mybatis3缓存设置

开启缓存

默认情况下,缓存没有开启。要开启缓存,在SQL的映射文件中加入

<cache/>

 其作用为

  映射语句文件中的所有 select 语句将会被缓存。 

  映射语句文件中的所有 insert,update 和 delete 语句会刷新缓存。 

  缓存会使用 Least Recently Used(LRU,最近最少使用的)算法来收回。 

  根据时间表(比如 no Flush Interval,没有刷新间隔),缓存不会以任何时间顺序来刷新。 

  缓存会存储列表集合或对象(无论查询方法返回什么)的 1024个引用。 

  缓存会被视为是 read/write(可读/可写)的缓存,意味着对象检索不是共享的,而且可以安全地被调用者修改,而不干扰其他调用者或线程所做的潜在修改。 

设置缓存属性

<cache 
 eviction="FIFO" 
 flushInterval="60000
 size="512" 
 readOnly="true"/> 

 这个含义是,回收策略为先进先出。最多保存512个引用,引用返回的对象是只读的,每隔60秒刷新一次

可用的收回策略有: 

  LRU –  最近最少使用的:移除最长时间不被使用的对象。 

  FIFO –  先进先出:按对象进入缓存的顺序来移除它们。 

  SOFT –  软引用:移除基于垃圾回收器状态和软引用规则的对象。 

  WEAK –  弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象

默认的是 LRU。 

自定义缓存

<cache type=”com.domain.something.MyCustomCache”/> 

 定义的缓存要实现以下接口即可

 public interface Cache { 
            String getId(); 
            int getSize(); 
            void putObject(Object key, Object value);
            Object getObject(Object key); 
            boolean hasKey(Object key); 
            Object removeObject(Object key); 
            void clear(); 
            ReadWriteLock getReadWriteLock(); 
       } 

 调用自定义缓存的方法

<cache type=”com.domain.something.MyCustomCache”> 
 <property name=”cacheFile” value=”/tmp/my-custom-cache.tmp”/>
</cache> 

 这会调用MyCustomCache的setCacheFile方法

在语句上设置缓存

<select ... flushCache=”false” useCache=”true”/> 
<insert ... flushCache=”true”/> 
<update ... flushCache=”true”/> 
<delete ... flushCache=”true”/> 
 

如果当前映射文件要使用别的映射文件中的缓存设置

<cache-ref namespace=”com.someone.application.data.SomeMapper”/> 
 

猜你喜欢

转载自thoughtfly.iteye.com/blog/1487753