有一些比如字典数据需要进行缓存处理,于是就考虑使用mybatis的二级缓存 但是我的项目是springboot+mybatis-plus整合的,我也浏览了许多博客 基本都是在结合redis或者xml方式配置mybatis的,于是另寻奇径 干脆就用springboot的缓存 废话不多说 上图。
1. 第一步 添加cache的依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency>
2.启动类上加@EnableCaching注解
看源码会发现使用到的都是CGLIB的动态代理
3.在servicer层实现方法上加
@Cacheable(cacheNames = "XXXXXXX", key = "XXXXX")
至此其实就已经搞定了
看似简单三步没有问题吧?那么有的小伙就问了:你上面只列举了几种key的指定 那我现在没有参数或者是分页有多个参数 那我的key怎么指定呢?
其实呢这个key"" 就相当于spring创建的一个hashmap key是你的入参,value就是你的出参
每次你查询 走到这个map发现没有,然后去数据库里面查~查到的同时把值存入map当中,然后再次查询就会通过key"???"你指定传入的参数 去map寻找你的出参value
然后给到你缓存的数据。
(下图转载至https://www.jianshu.com/p/042986867bfc)
OK 现在终于没问题了吧,那么问题来了 该如何测试?或者如何看到效果呢?有swagger的用swagger没有的用postman总之只要能查数据就OK 看一下效果。
我先打个断点DEBUG一下 然后去查询该数据
看到进入该断点并且成功查询到数据并打印到控制台
然后我清空控制台,再次查询,可以看到并没有输出任何SQL语句