若依前后端分离版数据库已经存在的字典添加一条后刷新没作用,必须清除Redis缓存
场景使用若依的前后端分离版,前端下拉框的使用直接查询的是字典表中的数据。对于某个类型的字典如果之前已经添加过并使用过,后来想要再添加一条此类型的字典。在数据库中添加后,前端刷新下,发现没有获取到新增的字典数据。注:博客:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现这是因为若依的根据字典类型获取数
·
场景
使用若依的前后端分离版,前端下拉框的使用直接查询的是字典表中的数据。
对于某个类型的字典如果之前已经添加过并使用过,后来想要再添加一条此类型的字典。
在数据库中添加后,前端刷新下,发现没有获取到新增的字典数据。
注:
博客:
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();
}
}
更多推荐
已为社区贡献56条内容
所有评论(0)