您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
小编给大家分享一下如何使用@CachePut更新数据库和更新缓存,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
要和@CachePut 的key一致
比如:
@Cacheable(key = "'userCache'") //缓存, public Uuser findByEmail(String email) { System.err.println("执行这里,说明缓存中读取不到数据,直接读取数据库...."); return redisMapper.findByEmail(email); } @CachePut(key = "'userCache'") //userCache要加‘'单引号,表示这是一个字符串 public Uuser updateSelf(String nickname, String email) { System.err.println("执行这里,更新数据库,更新缓存...."); uuserMapper.updateSelf(nickname, email); Uuser uuser = redisMapper.findByEmail(email); return uuser; }
要和@Cacheable的返回值一样
如果@Cacheable 返回的是一个对象,@CachePut 返回也要是对象,否则会报类型转换异常,如上代码 返回的都是 Uuser.
CachePut 跟 Cacheable放在一起, Cacheable的效果就跟 CachePut 一样的,每次都会去查数据库,虽然有缓存。
/** * * @param id * @return */ @Caching( put = { @CachePut(key = "T(cn.a.b.constant.RedisKey).OPEN_MEDIUM_INFO + #result.mediumBankCard", unless="#result.mediumBankCard==null or #result.status !='2'"), @CachePut(key = "T(a.b.c.constant.RedisKey).ACCOUNT_CODE + #result.accountCode", unless="!{'0','1','2','3'}.contains(#result.mediumStatus)"), @CachePut(key = "T(a.b.c.constant.RedisKey).CERT_NO+ #result.certNo", unless="#result.certNo==null or !{'0','1','2','3'}.contains(#result.status)") } , cacheable = {@Cacheable(key="T(a.b.c.constant.RedisKey).ID + #id")} ) public XXXInfo selectByPrimaryKey(Long id){ return mapper.selectByPrimaryKey(id); }
Service.java /** * * @param id * @return */ @Caching( put = { @CachePut(key = "T(cn.a.b.constant.RedisKey).OPEN_MEDIUM_INFO + #result.mediumBankCard", unless="#result.mediumBankCard==null or #result.status !='2'"), @CachePut(key = "T(a.b.c.constant.RedisKey).ACCOUNT_CODE + #result.accountCode", unless="!{'0','1','2','3'}.contains(#result.mediumStatus)"), @CachePut(key = "T(a.b.c.constant.RedisKey).CERT_NO+ #result.certNo", unless="#result.certNo==null or !{'0','1','2','3'}.contains(#result.status)") } ) public XXXInfo selectByPrimaryKey(Long id){ return mapper.selectByPrimaryKey(id); } Mapper.java { @Cacheable(key="T(a.b.c.constant.RedisKey).ID + #p0") XXXXInfo selectByPrimaryKey(Long id); }
mybatis 接口类参数。用#参数名无效。 只能用#p0, #p1
以上是“如何使用@CachePut更新数据库和更新缓存”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。