1、什么是缓存[Cache]
2、为什么要使用缓存
3、什么样的数据需要使用缓存
4、Mybatis缓存
MyBatis系统中默认定义了两级缓存:一级缓存和二级缓存
5、一级缓存
一级缓存也叫本地缓存:
6、一级缓存失效的四种情况
@Test public void testQueryUserById(){ SqlSession session = MybatisUtils.getSession(); UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.queryUserById(1); System.out.println(user); session.clearCache();//手动清除缓存 User user2 = mapper.queryUserById(1); System.out.println(user2); System.out.println(user==user2); session.close(); }
所以说,一级缓存就是一个map
7、二级缓存
工作机制
使用步骤:
核心配置文件
<setting name="cacheEnabled" value="true"/>
方式一: <cache/> 方式二: 官方示例=====>查看官方文档 <cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/> 这个更高级的配置创建了一个 FIFO 缓存,每隔 60 秒刷新,最多可以存储结果对象或列表的 512 个引用,而且返回的对象被认为是只读的,因此对它们进行修改可能会在不同线程中的调用者产生冲突。
8、结论
原理图:
原文:https://www.cnblogs.com/zitai/p/11831703.html