和缓存有关的设置/属性:
1、全局配置文件中cacheEnabled = true/false 开启缓存/关闭缓存,首先会关闭二级缓存,一级缓存一直可用。
2、映射文件中每个select标签都有useCache="true",使用缓存;false就是不使用二级缓存,但一级缓存仍然使用。
3、每个增删改标签中默认flushCache="true",意思是增删改执行完之后就会清除缓存。两级缓存都会被清空。
4、在查询标签中默认flushCache="false",如果改为true,那么每次查询之后都会清空缓存,缓存就没有被使用。
5、sqlSession.clearCache(); 只是清除当前session的一级缓存,不影响二级缓存
6、localCacheScope;本地缓存作用域(一级缓存Session),当前会话的所有数据保存在会话缓存中;STATEMENT可以禁用一级缓存,但是一般也没有人去配置它。
缓存原理:
mybatis规定的Cache接口,提供以下实现类。缓存对于mybatis来说,就是一个map。
缓存的使用顺序:先看二级缓存,再看一级缓存,如果两个缓存都没有所需数据才去数据库查询。
第三方缓存(整合ehcache):
1、导入第三方缓存相关jar包。
2、实现Cache接口,即导入与第三方缓存整合的
ehcache的适配器包,点击下载相关的ehcache整合的jar包
3、在映射文件中修改cache标签中属性
<cache type="org.mybatis.caches.ehcache.EhcacheCache"></cache>
要把这个ehcache的配置文件放在类路径下。
4、可以测试结果
这就是ehcache打印的日志,或者去相应的文件夹中查看文件信息
5、引用缓存,用namespace来指定和哪个名称空间下的缓存一样。
<cache-ref namespace="com.atguigu.mybatis.dao.EmployeeMapper" />
总结: