场景

使用若依的前后端分离版,前端下拉框的使用直接查询的是字典表中的数据。

对于某个类型的字典如果之前已经添加过并使用过,后来想要再添加一条此类型的字典。

在数据库中添加后,前端刷新下,发现没有获取到新增的字典数据。

注:

博客:
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();
    }
}

 

Logo

快速构建 Web 应用程序

更多推荐