81,094
社区成员
发帖
与我相关
我的任务
分享
@Component
@AllArgsConstructor
@Slf4j
public class InitDictionariesCacheRunner implements CommandLineRunner {
private final RedisTemplate redisTemplate;
private final DictionaryBizService dictionaryBizService;
@Override
public void run(String... args) throws Exception {
redisTemplate.delete(AuthConstants.DICTIONARIES_KEY);
//查询所有字典数据
List<UipDictionary> uipDictionaries = dictionaryBizService.list();
//定义字典type数组
List<String> typeCodeList = new ArrayList<>();
//从所有数据中遍历获取type_code存入数据
uipDictionaries.forEach(entity->{
String typeCode = entity.getTypeCode();
typeCodeList.add(typeCode);
});
//遍历type_code数组
typeCodeList.forEach(str->{
//根据type_code查询对应的name和value
List<RedisDictionariesVO> listmap = dictionaryBizService.queryByTypeCode(str);
Map<String, List<RedisDictionariesVO>> dictionariesMap = new TreeMap<>();
Optional.ofNullable(listmap).orElse(new ArrayList<>()).forEach(uipDictionary -> {
dictionariesMap.put(str, listmap);
});
redisTemplate.opsForHash().putAll(AuthConstants.DICTIONARIES_KEY, dictionariesMap);
});
}
}
Service查询代码:
@Override
public List<RedisDictionariesVO> queryByTypeCode(String typeCode) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("type_code", typeCode);
List<UipDictionary> listEntity = this.baseMapper.selectList(queryWrapper);
List<RedisDictionariesVO> maplist = new ArrayList<>();
listEntity.forEach(entity->{
String value = entity.getValue();
String name = entity.getName();
RedisDictionariesVO vo = new RedisDictionariesVO();
vo.setName("NAME:"+name);
vo.setValue("VALUE:"+value);
maplist.add(vo);
});
return maplist;
}