欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringCache之 @CachePut的使用

 更新時間:2021年02月13日 10:55:27   作者:最胖的胖胖虎  
這篇文章主要介紹了SpringCache之 @CachePut的使用,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

使用CachePut注解,該方法每次都會執(zhí)行,會清除對應(yīng)的key值得緩存(或者更新),

分為以下兩種情況:

如果返回值null,下次進行該key值查詢時,還會查一次數(shù)據(jù)庫,此時相當于@CacheEvict注解;

如果返回值不為null,此時會進行該key值緩存的更新,更新緩存值為返回的數(shù)據(jù);

分析:情況一返回值為null:

//使用Redis緩存
  @Cacheable(value="Manager",key="#id")
  public User findById(Integer id) {
    System.out.println("---查數(shù)據(jù)庫DB-----");
    return userMapper.selectByPrimaryKey(id);
  }
 
  @CachePut(value="Manager",key="#manager.getId()")
  //@CacheEvict(value="Manager",key="#manager.getId()")//清除數(shù)據(jù)
  public User update(User manager) {
    userMapper.updateByPrimaryKeySelective(manager);
    //return userMapper.selectByPrimaryKey(manager.getId());
    return null;
  }

情況二返回值不為null: 

先進行數(shù)據(jù)id為1的查詢,發(fā)現(xiàn)下次查詢id為1的數(shù)據(jù)不會再查詢DB,直接走緩存;

此時進行id為1數(shù)據(jù)更新操作,并且返回值為null;

進行id為1的數(shù)據(jù)查詢,發(fā)現(xiàn)此時id為1緩存不存在,進行DB查詢;

 //使用Redis緩存
  @Cacheable(value="Manager",key="#id")
  public User findById(Integer id) {
    System.out.println("---查數(shù)據(jù)庫DB-----");
    return userMapper.selectByPrimaryKey(id);
  }
 
  @CachePut(value="Manager",key="#manager.getId()")
  //@CacheEvict(value="Manager",key="#manager.getId()")//清除數(shù)據(jù)
  public User update(User manager) {
    userMapper.updateByPrimaryKeySelective(manager);
    return userMapper.selectByPrimaryKey(manager.getId());
    //return null;
  }

先進行數(shù)據(jù)id為1的查詢,發(fā)現(xiàn)下次查詢id為1的數(shù)據(jù)不會再查詢DB,直接走緩存;

此時進行id為1數(shù)據(jù)更新操作,返回值不為null;

進行id為1的數(shù)據(jù)查詢,發(fā)現(xiàn)此時id為1緩存被更新為更新的數(shù)據(jù),且沒有進行DB查詢操作;

補充:@CachePut和@Cacheable的區(qū)別

@CachePut負責(zé)增加緩存

@Cacheable負責(zé)查詢緩存,如果沒查到,則將執(zhí)行方法,并將方法的結(jié)果增加到緩存

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • 關(guān)于mybatis傳入?yún)?shù)一直為null的問題

    關(guān)于mybatis傳入?yún)?shù)一直為null的問題

    這篇文章主要介紹了關(guān)于mybatis傳入?yún)?shù)一直為null的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 詳解Java并發(fā)編程基礎(chǔ)之volatile

    詳解Java并發(fā)編程基礎(chǔ)之volatile

    volatile作為Java多線程中輕量級的同步措施,保證了多線程環(huán)境中“共享變量”的可見性。這里的可見性簡單而言可以理解為當一個線程修改了一個共享變量的時候,另外的線程能夠讀到這個修改的值。本文將詳解介紹Java并發(fā)編程基礎(chǔ)之volatile
    2021-06-06
  • SpringBoot啟動過程逐步分析講解

    SpringBoot啟動過程逐步分析講解

    這篇文章主要介紹了SpringBoot啟動過程的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • Spring?Boot實現(xiàn)配置文件的自動加載和刷新功能

    Spring?Boot實現(xiàn)配置文件的自動加載和刷新功能

    這篇文章我們介紹了Spring?Boot如何實現(xiàn)配置文件的自動加載和刷新,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-05-05
  • 推薦幾本學(xué)習(xí)java的書籍

    推薦幾本學(xué)習(xí)java的書籍

    本文給大家推薦了幾本學(xué)習(xí)Java的書籍,非常適合Java的初學(xué)者,有需要的朋友可以看看
    2014-10-10
  • Maven 安裝目錄的詳細介紹

    Maven 安裝目錄的詳細介紹

    這篇文章主要介紹了Maven 安裝目錄的詳細介紹的相關(guān)資料,這里對Maven進行了解讀,希望通過本文可以幫助到大家,需要的朋友可以參考下
    2017-08-08
  • Java學(xué)習(xí)基礎(chǔ)之安裝JDK/配置JDK環(huán)境&IEDA工具安裝

    Java學(xué)習(xí)基礎(chǔ)之安裝JDK/配置JDK環(huán)境&IEDA工具安裝

    這篇文章主要介紹了Java學(xué)習(xí)基礎(chǔ)系列文章的第一篇,主要內(nèi)容是安裝JDK/配置JDK環(huán)境&IEDA工具安裝的相關(guān)資料,需要的朋友可以參考下
    2020-02-02
  • Java編程實現(xiàn)多線程TCP服務(wù)器完整實例

    Java編程實現(xiàn)多線程TCP服務(wù)器完整實例

    這篇文章主要介紹了Java編程實現(xiàn)多線程TCP服務(wù)器完整實例,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Set接口深入剖析之HashSet、LinkedHashSet和TreeSet

    Set接口深入剖析之HashSet、LinkedHashSet和TreeSet

    這篇文章主要介紹了Set接口深入剖析之HashSet、LinkedHashSet和TreeSet,LinkedHashSet是HashSet的子類,實現(xiàn)了Set接口,LinkedHashSet底層是一個LinkedHashMap,底層維護了一個數(shù)組+雙向鏈表,需要的朋友可以參考下
    2023-09-09
  • java中PreparedStatement和Statement詳細講解

    java中PreparedStatement和Statement詳細講解

    這篇文章主要介紹了java中PreparedStatement和Statement詳細講解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11

最新評論