zoukankan      html  css  js  c++  java
  • 若依前后端分离版数据库已经存在的字典添加一条后刷新没作用,必须清楚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();
        }
    }
    博客园: https://www.cnblogs.com/badaoliumangqizhi/ 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。
  • 相关阅读:
    Android开发探秘之一:创建可以点击的Button
    TCP之心跳包实现思路
    Asp.net与Dojo交互:仪器仪表实现
    Asp.net Json数据解析的一种思路
    Asp.net通过Jquery操作WebService进行Ajax读写
    GridView自定义删除操作
    从客户端中检测到有潜在危险的request.form值
    JUC-Condition线程通信
    ModelAndView 配置与使用
    SpringMVC之ModelAndView的用法(转)
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/13588610.html
Copyright © 2011-2022 走看看