@Cacheable 拼接key的操作

我就廢話不多說瞭,大傢還是直接看代碼吧~

@Cacheable(value = "page_user",key ="T(String).valueOf(#page).concat('-').concat(#pageSize)",unless = "#result=null")//由於page是int型,concat要求變量必須為String,所以強轉一下
@Override
public List<SysUserEntity> page(int page, int pageSize) {
  return userMapper.page(page,pageSize);
}

補充:記一個spring緩存Cacheable註解key設置問題

spring的Cacheable註解用來設置緩存,其中的key屬性為spel表達式,如果要設置常量,則需要用”包裹,如:

@Cacheable(value = CacheConstant.APPLICATION,key = "'id_map'")

此處的”‘id_map'”代表key設置瞭一個常量,如果沒有”,則會報錯

org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field ‘lang_code_map’ cannot be found on object of type ‘org.springframework.cache.interceptor.CacheExpressionRootObject’ – maybe not public or not valid?

意思為在緩存表達式根對象上找不到指定屬性,說明如果不加”,則id_map作為屬性解析

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。