//SqlSessionFactoryBuilde用一次就好,主要来生成SqlSessionFactory
SqlSessionFactory = SqlSessionFactoryBuilder().build(Resources.getResourceAsReader(a.xml));
//SqlSessionFactory 一旦创建,一直存在
SqlSession session = sqlSessionFactory.openSession();
//SqlSession 每个线程都有自己的Sqlsession实例。应该和http作用域保持一致
BlogMapper mapper = session.getMapper(BlogMapper.class);
//调用方法的时候启用,方法调用结束,销毁。
mapper.selectBlog(101);
Mybatis 以及缓存默认开启,无法控制,每一个Sqlsession 有一个一级缓存。mapper.xml 中可以配置flushCache 清空缓存。但是这样会清空所有的缓存影响速度。
Mybatis 二级缓存:
<settings>
<setting name = "cacheEnabled" value = "true">
</settings>
Mybatis 默认配置文件全局二级缓存默认开启,
Mapper.xml 中配置cache元素
<cache
eviction(回收策略)
LRU:最近使用最少
FIFO:先进先出
SOFT:软引用,移除基于垃圾回收器状态的软引用规则对象
WEAK:弱应用:更积极的移除基于垃圾收集器状态的弱引用规则对象。
flushInterval(刷新间隔):正整数,代表毫秒默认情况不设置,缓存仅在调用语句时候刷新
size:引用数目。默认值1024
readOnly:默认为false,返回缓存对象的拷贝安全。
在接口上使用@CacheNamespace开启二级缓存。
参照缓存cache-ref,@cacheNamespaceRef()