小老虎的开发记述【十四】SpringBoot+MyBatis一级缓存失效问题

今天,在写一个路由支付接口的时候,突然想起来数据量很大。需要不停的查询数据比对数据。在发现使用JDK8之后的lambda表达式,并不能解决这个问题。
因为,是需要对数据进行模糊查询的。于是,就想到了MyBatis一级缓存。使用之后发现Mybatis的一级缓存竟然失效了。(因为用不到二级缓存,就不需要在配置文件里面配置了)。
Google了半天,最后在一篇博客里面发现了解决方法。

MyBatis一级缓存是指SqlSession一级缓存作用域是一个SqlSessionMyBatis默认开启一级缓存

在同一个SqlSession中,执行相同的查询SQL,第一次会去查询数据库,并写到缓存中;第二次直接从缓存中取。当执行SQL时两次查询中间发生了增删改操作,则SqlSession的缓存清空。

你只需要在你的方法上加上@Transactional注解就行了。
但是,可能大家会想,因为一个一级缓存就需要在查询的service方法上加注解,很费劲。
但是,我需要实现的功能是有CRUD中的CU的。所以,也必须加上注解。
即使加上事务注解的话,也没关系啊。因为需要使用到缓存的service只能是极个别的,如果很多的话,则说明业务设计有问题了。

最后附上博客地址

https://blog.csdn.net/u013887008/article/details/80379938

https://www.cnblogs.com/QQParadise/articles/5109633.html

https://www.cnblogs.com/xdp-gacl/p/4270403.html

你可能感兴趣的:(小老虎的开发记述【十四】SpringBoot+MyBatis一级缓存失效问题)