mybatis什么时候不走 缓存??

MyBatis什么时候不走 缓存??

一级缓存

sqlSession不是同一个对象,肯定就不走缓存了,

ThreadLocal只能确保同一个会话,

当new sqlSessionFactoryBuild新的会话,新的,那么会有2个不同的sqlSession,那么缓存失效

查询条件不一样,肯定也不走缓存

这个才是根源所在!!

什么时候一级缓存失效?

第一次DQL和第二次DQL之间你做了以下两件事中的任意一件,都会让一级缓存清空:

1.执行了sqlSession的clearCache方法,这是手动清空缓存。

2.执行了INSERT DELETE UPDATE语句。

二级缓存的范围是

qlSessionFactory。

使用二级缓存需要具备以下几个条件:

1.<setting name="cacheEnabled"value="true">全局性地开启或关闭所有映射器配置文件中已配置的任何缓存。默认就是true,无需设置

2.在需要使用二级缓存的SqlMapper.xml文件中添加配置:<cache/>

3.使用二级缓存的实体类对象必须是可序列化的,也就是必须实现java.io.Serializable接口

4.SqlSession对象关闭或提交之后,一级缓存中的数据才会被写入到二级缓存当中。此时二级缓存才可用。

我也不懂。。。

相关推荐
tryxr2 小时前
SpringMVC 中的常用注解和用法
spring·mvc·springmvc
014-code3 小时前
Redis 删除缓存失败怎么办?重试、死信、补偿的工程化方案
数据库·redis·缓存
rannn_1113 小时前
【Redis|高级篇1】分布式缓存|持久化(RDB、AOF)、主从集群、哨兵、分片集群
java·redis·分布式·后端·缓存
難釋懷3 小时前
认识Canal
缓存
我是大猴子14 小时前
Spring代理类为何依赖注入失效?
java·后端·spring
小哇66616 小时前
MybatisPlus-JSON类型处理器 存取 数据库的JSON 字段数据
mybatis
Java成神之路-16 小时前
通俗易懂理解 Spring MVC 拦截器:概念、流程与简单实现(Spring系列16)
java·spring·mvc
小旭952718 小时前
Spring Security 实现权限控制(认证 + 授权全流程)
java·后端·spring
海兰19 小时前
使用 Spring AI 打造企业级 RAG 知识库第二部分:AI 实战
java·人工智能·spring