默认情况下,更新数据库的内容,缓存里面的内容还是原来的数据,@CachePut :保证方法被调用后,又将对应缓存中的数据更新
1.mapper
@Update("UPDATE `user` SET `username`=#{username}, `real_name`=#{realName}, `password`=#{password}, `gender`=#{gender}, `user_type`=#{userType} WHERE `id`=#{id}")
int updateUser(User user);
2.service
@CachePut(cacheNames = "user",key = "#result.id")
public User updateUser(User user){
userMapper.updateUser(user);
return user;
}
3.controller
@GetMapping("/updateUser")
public User updateUser(User user){
User user1 = userService.updateUser(user);
return user1;
}
注意:
1.? 需要指定key属性: key="#user.id"?参数对象的id?或 key?= "#result.id"?返回值对象id,否则报错。
2.? @CachePut在方法执行之后使用,所以key可以使用result
3.??@Cacheable在方法之前使用,所以不可以使用result
使用:
先查询数据,确保数据已经存入缓存,
然后更新,查看数据库内容是否更新,
最后再次查询数据,查看缓存的数据是否更新,?
|