第九章:(3)Spring Boot 与 缓存 之 @CachePut 注解


一、@CachePut

  @CachePut:既调用方法,又更新缓存数据,同步更新缓存,修改了数据库的某个数据,同时更新缓存。
  注意:存取使用的 key 必须是同一个。

  运行时机
    1、先调用目标方法
    2、将目标方法的结果缓存起来

  测试步骤:

    1、先查询1号员工,查到的结果会放到缓存中

key:id=1 的参数
value: 1号员工

  

    2、以后查询还是之前缓存中的结果
    3、更新1号员工
       将方法的返回值也放进缓存了:

key:传入参数 employee 对象
value:返回的 employee 对象

  

    4、再来查询1号员工
     应该是更新后的员工

key = "#emp.id" ,使用传入的参数的 id 进行更新
key = "#result.id" 参数与返回值一样

  

      注意:@Cacheable 的 key 不能用 #result【要先用key去缓存中查询】

    为什么是没有更新前的? 【1号员工没有在缓存中更新,使用的 key 不一样

  

二、示例代码

  1、查询员工

    @Cacheable(cacheNames = {"emp"}) //默认的key就是参数 id public Employee getEmpById(Integer id) { System.out.println("查询" + id +"号员工"); return employeeMapper.getEmpById(id); }

 

  2、更新员工

    @CachePut(value = {"emp"}, key = "#result.id") public Employee updateEmp(Employee emp) { System.out.println("updateEmp:" + emp); Integer result = employeeMapper.updateEmp(emp); return emp; }

 

  使用 @CachePut 生效,必须要与存放缓存的  key 一致。

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM