查询出数据,在显示的同时,把查询结果进行缓存,那么下次当再次需要这些数据时,可以直接到缓存中获取,不用再次执行SQL语句
特点:
- 提高了应用的效率
- 缓存的数据容易过时
- 如果有增,删,改的操作进行,那么缓存中的数据就失效
一级缓存(session级别的缓存,mybatis默认的缓存机制)
原理图:(必须是同一个session)

一级缓存数据更新:
1、当session关闭后,session的数据会清空,进行重新查询、缓存
2、当提交事务(insert update delete)后,session中缓存的数据会清空。
二级缓存
原理图:(不同的session可以从同一缓存文件中获取缓存数据)

二级缓存的使用过程:
1、在mybatis-config.xml配置文件中的<settings></settings>标签中启用二级缓存
<!-- 启用二级缓存 -->
<setting name="cacheEnabled" value="true"/>

2、在对应的mapper.xml文件中,例如UserMapper.xml,启用二级缓存
<cache></cache>

<!-- 启用二级缓存的总开关,此文件中的所有方法都使用二级缓存 -->
<cache></cache>
UserRoleMapper.xml

3、POJO实体类实现可序列化的接口

(不必要)4、在mapper文件的某个增,删,改,查方法中可以设置不使用二级缓存 ,这样该方法就不会使用二级缓存,而使用默认的一级缓存
useCache="false"
当二级缓存启动后:
- 1、所有的select语句的查询结果都会被缓存
- 2、当执行了insert update delete ,会清空对应的缓存结果
- 3、缓存会使用LRU(最近最少使用)算法收回数据
本文详细介绍了MyBatis的一级缓存和二级缓存的工作原理,包括缓存的更新机制、如何启用二级缓存以及缓存数据的回收策略。通过理解这些机制,开发者可以更有效地管理和优化应用程序的性能。
1044

被折叠的 条评论
为什么被折叠?



