Mybaits像hibernate一样提供两种缓存机制一种是session机制的缓存,默认是以及缓存另一种是全局缓存机制,你也可以理解是SqlSessionFactory域的缓存,二级缓存你需要在mapper中加入<cache/>才能实现.其中缓存有给予自动配置也有自定义实现.
重要缓存时POJO类需要序列化
1.二级缓存详细配置
<cache eviction="FIFO"//缓存算法,先入先出,此外也可以是LRC最近最少访问,SOFT软引用(根据垃圾收集器状态和删除对象的规则软引用),弱引用(更积极地根据垃圾收集器删除对象的状态弱引用和规则).
flushInterval="60000"//多长时间刷新一次 size="512"//缓存大小 readOnly="true"/>
总结一句话就是:查询被缓存,增删改被更新.
2.自定义缓存.
<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(); }
3.你可以具体指定某个具体的方法如何与缓存交互.
<选择…flushCache = " false " useCache = " true " / > <插入…flushCache = " true " / > <更新…flushCache = " true " / > <删除…flushCache = " true " / >
4. 共享命名空间里缓存配置
<cache-ref namespace="com.someone.application.data.SomeMapper"/>