Spring Cacheable注解不缓存null值

@SuppressWarnings("unchecked")
	@Cacheable(value = "people", key="#person.id",condition = "#p0.id.equals(\"1\")")//操作成功 进行缓存
    public ResultBean<Person> cacheCondition(Person person) {
    	System.out.println("读取数据库"+person.getId());
    	return new ResultBean<Person>(person).success();
    }
    
    //map的value为“”或者null时不缓存
    /**
     * Property or field 'value' cannot be found on object of type 'java.util.HashMap' - maybe not public
     *作者 : iechenyb<br>
     *方法描述: 说点啥<br>
     *创建时间: 2017年7月15日hj12
     *@param isNull
     *@return
     *#result.value == null or #result.value == \"\" 报异常,无value属性
     *可以在result上新增一个标记 表示当data=null或者data=""的状态 然后根据状态值进行 ||与or都行
     */
    @Cacheable(value = "people",unless = "#result.get(\"value\") == null || #result.get(\"value\") == \"\" || #result.get(\"value\").size()==0")//操作成功 进行缓存
    public Map<String,Object> cacheMapCondition(String isNull) {//******
    	Map<String,Object> data = new HashMap<String,Object>();
    	if("1".equals(isNull)){
    		data.put("value", null);
    	}else if("2".equals(isNull)){
    		data.put("value", "");
    	}else if("3".equals(isNull)){
    		data.put("value", new ArrayList<>());//成功缓存
    	}else if("4".equals(isNull)){
    		data.put("value", new LinkedHashMap<>());//成功缓存
    	}else{
    		data.put("value", "chenyb");//没有size方法 报错  一般情况下 是知道方法的类型的!!!
    	}
    	System.out.println("如果不为空,则缓存,否则每次都查询数据库!");
    	return data;
    }
    //unless  满足的条件是 不缓存
    @Cacheable(value = "people",unless = "#result.cacheable == false")//操作成功 进行缓存*******
    public ResultBean<String> cacheRSBeanCondition(String isNull) {
    	ResultBean<String> data = new ResultBean<>();
    	if("1".equals(isNull)){
    		data.data(null);
    		data.cacheable(false);
    	}else if("2".equals(isNull)){
    		data.data("");
    		data.cacheable(false);
    	}else{
    		data.data("chenyb");
    		data.cacheable();
    	}
    	System.out.println("如果不为空,则缓存,否则每次都查询数据库!");
    	return data;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值