第一在主启动类中 加入
@EnableCaching()
@SpringBootApplication
@MapperScan("com.yumin.dataobject.mappper")
@EnableCaching //开启注解
public class SellApplication {
public static void main(String[] args) {
SpringApplication.run(SellApplication.class, args);
}
}
注意面向前端的VO 需要实例化 实现 Serializable接口
要不然会报错
1.在我们处理的类中加上缓存注解
@Cacheable(cacheNames = "product",key="123")
怎么理解呢? 其实我们这个方法返回的对象数据放回到了缓存中 。
第一次走进入这个方法 ,第二次就不会进这个方法里面了 ,可以debug测试下。
那么问题来了 ? 如果我们后台修改了数据且不是缓存里面还没有变?
怎么办呢?
在后天调用的方法上面添加注解
@CacheEvict(cacheNames="product",key="123");
就是每执行这个 方法我们就把product这个包给清除掉。
然后再次调用list这个方法的时候第一次还是会进入方法内 从第二次就开始从缓存里面读取
@CachePut(cacheNames="",key="") 只能在放回值一样的时候才可以使用和 @CacheAble搭配只用 。@CacheAble只放在不对数据修改的一方。
添加条件判断
key=“#sellId” 后面可以加上condition=“#sellId.length()>3”如果参数大于3的话第一次进入方法第二次就会进缓存区拿。还有参数必须传入,不然会报错。
最后一个点:
因为我们放回的结果如果code ==0 为正确结果 进行缓存,如果code=1 那么就不需要缓存了 。只对正确的缓存怎么做呢?
unless=“#result.getCode!=0”
需要取反值。