@Cacheable(value = "userCache", key = "#id") // 添加缓存注解 public User getUserById(Long id) { return userDao.getUserById(id); } } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 其中,@Cacheable注解有两个重要的参数:value和key。value表示缓存的名称,如果没有指定则使用默认缓存...
value/cacheNames 指定缓存组件的名字 @Cacheable(value = "test") key 缓存数据使用的 key,可以用它来指定。默认是使用方法参数的值 这个key 你可以使用 spEL 表达式来编写,如: @Cacheable(value = "test", key = "#userId+'-'+#id") keyGenerator key 的生成器,可以自己指定 key 的生成器的组件 id ...
@CachePut注解的使用方法和@Cacheable注解类似。在需要更新缓存的方法上添加@CachePut注解,并指定value和key值。 @ServicepublicclassUserServiceImplimplementsUserService{@AutowiredprivateUserDao userDao;@Override@Cacheable(value ="userCache", key ="#id")publicUser getUserById(Longid) {returnuserDao.getUser...
@CacheEvict(value = RedisConfig.REDIS_KEY_DATABASE, key = "'pms:brand:'+#id") @Override public int delete(Long id) { return brandMapper.deleteByPrimaryKey(id); } @Cacheable(value = RedisConfig.REDIS_KEY_DATABASE, key = "'pms:brand:'+#id", unless = "#result==null") @Override ...
1) "Cache::findById,1" 2) "Cache::findByName,1" 在实际项目中我们肯定不是只有一张表,如果其他表使用缓存的名字也是 Cache,很有可能产生相同的 key,比如我还有一个如下的 dao public interface TeacherDao extends CrudRepository{ @Cacheable(value = "Cache", key = "{#root.methodName, #aLong}") ...
此时可以使用@Cacheable(value={"cache1", "cache2"},key="#root.caches[0].name"),意思就是...
@CacheEvict(key="'PostId' + #p0")intdeleteById(int id);} 给key上加个字符串postId,用类似于postId3作为key,整个Post对象作为value。调用controller的save接口添加一条Post数据,打开redis可视化管理器,查看一下保存的这条数据: 发现key是以post:XX开头的乱码形式。这是默认的key生成策略,是通过序列化Serializa...
/** * http://localhost:8080/redisCache/select2?id=1 * * @return */ //添加指定key字段的缓存 //新增或者查询的时候 @Cacheable(value = "aa:bb:c:e#30", key = "#id", unless = "#result == null ") @RequestMapping("select2") public List select2(String id) { System.out.println(...
@ Cacheable(key = “'leader'+#p0 +#p1 +#p2” )一般用法,#p0表示方法的第一个参数,#p1表示第二个参数,以此类推。 目前方法的第一个参数为java的对象,但是原注解只支持Java的的基本数据类型。 1.2实现步骤 1.在原注解中加入新的参数, objectIndexArray表示哪几个角标参数(从0开始)为java对象,objectField...
@Cacheable(value = "Cache", key = "{#root.methodName, #name}") Optional<Teacher> findByName(String name); } 如果在调用 TeacherDao 中的方法命中了 StudentDao 中的方法会产生 ClassCastException ,这里就两种方式来解决这个问题。第一种办法是每个 dao 中都使用不同的缓存名字。第二是给 key 加上...