若依前后端分離版數據庫已經存在的字典添加一條后刷新沒作用,必須清楚Redis緩存


場景

使用若依的前后端分離版,前端下拉框的使用直接查詢的是字典表中的數據。

對於某個類型的字典如果之前已經添加過並使用過,后來想要再添加一條此類型的字典。

在數據庫中添加后,前端刷新下,發現沒有獲取到新增的字典數據。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。

實現

這是因為若依的根據字典類型獲取數據的接口使用了Redis的字典緩存機制。

前端調用的根據字典的類型獲取字典的值的接口對應的后台方法中

    @GetMapping(value = "/type/{dictType}")
    public AjaxResult dictType(@PathVariable String dictType)
    {
        return AjaxResult.success(dictTypeService.selectDictDataByType(dictType));
    }

對應的service中

 

   @Override
    public List<SysDictData> selectDictDataByType(String dictType)
    {
        List<SysDictData> dictDatas = DictUtils.getDictCache(dictType);
        if (StringUtils.isNotNull(dictDatas))
        {
            return dictDatas;
        }
        dictDatas = dictDataMapper.selectDictDataByType(dictType);
        if (StringUtils.isNotNull(dictDatas))
        {
            DictUtils.setDictCache(dictType, dictDatas);
            return dictDatas;
        }
        return null;
    }

會根據傳遞過來的字典類型首先從Redis的字典緩存中查詢,如果之前有的話則直接返回,

否則再從數據庫中進行查詢並且再存到緩存中。

所以為了顯示新增加的之前存在的字典類型是數據。

可以新建一個單元測試方法,調用清除字典緩存的數據。

那么在進行查詢時就是查詢數據了。

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestRedis {


    @Test
    public void test(){
        DictUtils.clearDictCache();
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM