最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用@CachePut?更新數據庫和更新緩存

 更新時間:2021年12月28日 08:45:06   作者:王某人i  
這篇文章主要介紹了使用@CachePut?更新數據庫和更新緩存方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

關于更新緩存 ,要注意兩點

1、@Cacheable的key

要和@CachePut 的key一致

比如:

  @Cacheable(key = "'userCache'") //緩存,
    public Uuser findByEmail(String email) { 
        System.err.println("執(zhí)行這里,說明緩存中讀取不到數據,直接讀取數據庫....");
        return redisMapper.findByEmail(email);
    }
  @CachePut(key = "'userCache'") //userCache要加‘'單引號,表示這是一個字符串
    public Uuser updateSelf(String nickname, String email) {
        System.err.println("執(zhí)行這里,更新數據庫,更新緩存....");
        uuserMapper.updateSelf(nickname, email);
        Uuser uuser = redisMapper.findByEmail(email); 
        return uuser;  
    }

2、@CachePut的返回值

要和@Cacheable的返回值一樣

如果@Cacheable 返回的是一個對象,@CachePut 返回也要是對象,否則會報類型轉換異常,如上代碼 返回的都是 Uuser.

緩存的CachePut沖突Cacheable

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

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 使用Java的Graphics類進行繪圖的方法詳解

    使用Java的Graphics類進行繪圖的方法詳解

    這篇文章主要介紹了使用Java的Graphics類進行繪圖的方法,是Java的GUI編程的基礎,需要的朋友可以參考下
    2015-10-10
  • 使用IDEA創(chuàng)建java項目的步驟詳解(hello word)

    使用IDEA創(chuàng)建java項目的步驟詳解(hello word)

    這篇文章主要介紹了使用IDEA創(chuàng)建java項目的步驟詳解(hello word),本文分步驟通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 關于Java的Character類詳解

    關于Java的Character類詳解

    這篇文章主要介紹了關于Java的Character類詳解,Java中的Character類是一個包裝類,用于封裝一個基本數據類型char的值,它提供了一些靜態(tài)方法來操作字符,需要的朋友可以參考下
    2023-05-05
  • java判斷l(xiāng)ist不為空的實現,和限制條數不要在一起寫

    java判斷l(xiāng)ist不為空的實現,和限制條數不要在一起寫

    這篇文章主要介紹了java判斷l(xiāng)ist不為空的實現,和限制條數不要在一起寫。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 一文帶你弄懂Java中線程池的原理

    一文帶你弄懂Java中線程池的原理

    工作中,我們經常使用線程池,但是你真的了解線程池的原理嗎?同時,線程池工作原理和底層實現原理也是面試經常問的考題,所以,今天我們一起聊聊線程池的原理吧
    2022-12-12
  • Java中Stream?API的使用示例詳解

    Java中Stream?API的使用示例詳解

    Java?在?Java?8?中提供了一個新的附加包,稱為?java.util.stream,該包由類、接口和枚舉組成,允許對元素進行函數式操作,?本文主要介紹了Java中Stream?API的具體使用,感興趣的小伙伴可以了解下
    2023-11-11
  • SpringBoot實現接口版本控制的示例代碼

    SpringBoot實現接口版本控制的示例代碼

    這篇文章主要介紹了springboot如何實現接口版本控制,接口版本控制,比如微服務請求中某個接口需要升級,正常做法是升級我們的版本,文中有詳細的代碼示例供大家參考,具有一定的參考價值,需要的朋友可以參考下
    2024-03-03
  • SpringMVC實現文件的上傳和下載實例代碼

    SpringMVC實現文件的上傳和下載實例代碼

    本篇文章主要介紹了SpringMVC實現文件的上傳和下載實例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • SpringBoot中數據傳輸對象(DTO)的實現

    SpringBoot中數據傳輸對象(DTO)的實現

    本文主要介紹了SpringBoot中數據傳輸對象(DTO)的實現,包括了手動創(chuàng)建DTO、使用ModelMapper和Lombok創(chuàng)建DTO的示例,具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • Java 泛型總結(三):通配符的使用

    Java 泛型總結(三):通配符的使用

    在泛型的使用中,還有個重要的東西叫通配符,本文介紹通配符的使用。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03

最新評論

商河县| 和林格尔县| 上林县| 砀山县| 噶尔县| 龙岩市| 遂宁市| 皋兰县| 阿瓦提县| 额济纳旗| 建平县| 顺义区| 德令哈市| 武邑县| 华亭县| 河津市| 定襄县| 库尔勒市| 宝兴县| 岑巩县| 米林县| 宜君县| 四会市| 巢湖市| 和静县| 海南省| 永春县| 宣城市| 许昌市| 晋中市| 乐昌市| 同德县| 和政县| 武城县| 长武县| 龙泉市| 武乡县| 聊城市| 革吉县| 图片| 遂昌县|