1.缓存的作用
主要是为了提高查询访问速度。将用户对同一数据的重复查询过程简化,不再每次均从
数据库查询获取结果数据,从而提高访问速度。
mybatis根据缓存区的作用域可分为:一级缓存和二级缓存。
从缓存中查询依据:相同的sql 的 id 、sql语句
2.一级缓存
生命周期:与SqlSession同步(同一线程间共享数据)
增删改会刷新(即清空)缓存
3.二级缓存
生命周期:与整个应用同步(不同线程间共享数据)
增删改会刷清空二级缓存;对于二级缓存的清空,实质上是对所查找key对应的value
置为null,另从DB中查找的条件是:
1.缓存中不存在相应的key;
2.缓存中存在该key对应的对象,但其value为null。
二级缓存设置不清空缓存:
在sql语句中,增删改语句<insert>、<delete>、<update>标签中, 默认 flushCache="true",改为false即可。
4.二级缓存的关闭
1.全局设置:在mybatis.xml配置文件中,即所有的都不使用缓存
<settings>
<setting name="cacheEnabled" value="false"/>
</settings>
2.局部设置:只针对某个查询语句是关闭的,整个应用却是开启的:
默认 useCache="true"是开启的
<select id="selectAllStudents" resultType="Student" useCache="false">
4.二级缓存使用原则:
1.多个namespace不要操作同一张表;
2.不要在关联关系表上执行增删改操作;
3.查询多于修改时可以使用二级缓存。
5.使用ehcache二级缓存
1.下载ehcache二级缓存:下载地址https://github.com/mybatis/ehcache-cache/releases
导入相关jar包,ehcache-core-2.6.8.jar和mybatis-ehcache-1.0.3.jar两个jar包
2.在mapper.xml中进行配置:
<cache type="org.mybatis.caches.ehcache.EhcacheCache"/>
3.在src中导入ehcache.xml文件
该文件在ehcache-core-2.6.8jar包中,解压即可看到ehcache-failsafe.xml改名即可。
注: mybatis内置二级缓存,只需在mapper.xml中配置<cache/>即可。