public List<SysDictData> selectDictDataByType(String dictType) { List<SysDictData> dictDatas = DictUtils.getDictCache(dictType); if (StringUtils.isNotEmpty(dictDatas)) { return dictDatas; } dictDatas = dictDataMapper.selectDictDataByType(dictType); if (StringUtils.isNotEmpty(dictDatas)) { DictUtils.setDictCache(dictType, dictDatas); return dictDatas; } return null; }
时间: 2024-02-14 09:32:47 浏览: 74
这段代码看起来是一个查询字典数据的方法,传入参数 dictType 表示要查询的字典类型。首先会从缓存中获取对应的字典数据,如果缓存中有数据,则直接返回缓存中的数据。如果缓存中没有数据,则从数据库中查询,并将查询结果存入缓存中后返回查询结果。如果查询结果为空,则返回 null。其中 DictUtils 是一个工具类,用于缓存字典数据。
相关问题
public static String getDictValue(String dictType, String dictLabel, String separator) { StringBuilder propertyString = new StringBuilder(); List<SysDictData> datas = getDictCache(dictType); if (containsAny(separator, dictLabel) && StringUtils.isNotEmpty(datas)) { for (SysDictData dict : datas) { for (String label : dictLabel.split(separator)) { if (label.equals(dict.getDictLabel())) { propertyString.append(dict.getDictValue()).append(separator); break; } } } } else { for (SysDictData dict : datas) { if (dictLabel.equals(dict.getDictLabel())) { return dict.getDictValue(); } } } return stripEnd(propertyString.toString(), separator); } 优化这段代码
首先,建议使用Java8的Stream API来简化代码。
代码优化建议如下:
```
public static String getDictValue(String dictType, String dictLabel, String separator) {
List<SysDictData> datas = getDictCache(dictType);
if (containsAny(separator, dictLabel) && StringUtils.isNotEmpty(datas)) {
return datas.stream()
.filter(dict -> Arrays.stream(dictLabel.split(separator)).anyMatch(label -> label.equals(dict.getDictLabel())))
.map(SysDictData::getDictValue)
.collect(Collectors.joining(separator));
} else {
return datas.stream()
.filter(dict -> dictLabel.equals(dict.getDictLabel()))
.map(SysDictData::getDictValue)
.findFirst()
.orElse(null);
}
}
```
这段代码使用Stream API来替换了原来的for循环,让代码更加简洁易读。同时,使用`.findFirst().orElse(null)`来代替原来的循环来取第一个元素,让代码更加高效。
给下面代码添加注释:public List<TaskTask> listStatisticsTask(String beginTime, String endTime, Integer forceType, String projectId) { return taskTaskMapper.selectList(Wrappers.<TaskTask>lambdaQuery() .eq(org.apache.commons.lang.StringUtils.isNotEmpty(RequestUtil.getCompanyId()), TaskTask::getCompanyId, RequestUtil.getCompanyId()) .eq(TaskTask::getDeleteStatus, DeleteStatusEnum.NOT_DELETED.getCode()) .between(org.apache.commons.lang.StringUtils.isNotEmpty(beginTime) && org.apache.commons.lang.StringUtils.isNotEmpty(endTime), TaskTask::getCreateTime, beginTime, endTime + ConstantUtils.END_TIME) .eq(org.apache.commons.lang.StringUtils.isNotEmpty(projectId),TaskTask::getTaskId, projectId) ); }
好的,以下是代码注释:
```
/**
* 根据条件查询任务列表
* @param beginTime 起始时间
* @param endTime 终止时间
* @param forceType 强制类型
* @param projectId 项目ID
* @return 任务列表
*/
public List<TaskTask> listStatisticsTask(String beginTime, String endTime, Integer forceType, String projectId) {
// 使用LambdaQuery构建查询条件
return taskTaskMapper.selectList(Wrappers.<TaskTask>lambdaQuery()
// 判断当前请求是否有公司ID,并添加查询条件
.eq(org.apache.commons.lang.StringUtils.isNotEmpty(RequestUtil.getCompanyId()), TaskTask::getCompanyId, RequestUtil.getCompanyId())
// 添加查询条件:任务删除状态为未删除
.eq(TaskTask::getDeleteStatus, DeleteStatusEnum.NOT_DELETED.getCode())
// 添加查询条件:任务创建时间在起始时间和终止时间之间
.between(org.apache.commons.lang.StringUtils.isNotEmpty(beginTime) && org.apache.commons.lang.StringUtils.isNotEmpty(endTime), TaskTask::getCreateTime, beginTime, endTime + ConstantUtils.END_TIME)
// 添加查询条件:任务ID等于指定的项目ID
.eq(org.apache.commons.lang.StringUtils.isNotEmpty(projectId),TaskTask::getTaskId, projectId)
);
}
```
这段代码是一个查询任务列表的方法,通过传入的参数进行条件查询。其中使用了LambdaQuery来构建查询条件,具有语句简洁、可读性强的特点。注释中对每个查询条件都进行了详细的解释。
阅读全文