缓存
一级缓存SqlSession
当SqlSession对象消失时,mybatis的一级缓存也就消失了。
当调用SqlSession的修改,添加,删除,commit(),close()等方法时,就会清空一级缓存。
sqlSession.clearCache();//此方法也可以清空缓存
二级缓存SqlSessionFactory
二级缓存的使用步骤:
1、首先在SqlMapConfig.xml中配置。
2、在IUserDao.xml中配置。
3、让当前的操作支持二级缓存(在select标签中配置)
在SqlMapConfig.xml中
<settings>
<!--开启mybatis支持延迟加载-->
<setting name="cacheEnabled" value="true"></setting>
</settings>
上面这个不配也行,因为默认是true。
开启user支持二级缓存
<cache/>
<select id="findById" parameterType="int" resultType="user" useCache="true">
select * from user where id=#{uid};
</selecty>
配上之后,第一次正常查询,第二次在缓存中获取,但是结果是false。
false的原因是二级缓存存放的是数据,而不是对象。