java - Spring data jpa 条件查询重构
问题描述
我在 spring data jpa 项目中有一段代码需要重构。实际上我想减少这种方法的 if else 阶梯。
private static void buildEntitlementFilterQuery(Root<Entitlement> entitlement, CriteriaBuilder cb,
List<Predicate> predicates, Entry<String, String> entry) {
if (StringUtils.isNotBlank(entry.getValue())) {
if (entry.getKey().equalsIgnoreCase(Constants.START_DATE)) {
predicates.add(cb.and(cb.greaterThanOrEqualTo(entitlement.get(entry.getKey()),
DateUtil.convertString(entry.getValue()))));
} else if (entry.getKey().equalsIgnoreCase(Constants.END_DATE)) {
predicates.add(cb.and(cb.lessThanOrEqualTo(entitlement.get(entry.getKey()),
DateUtil.convertString(entry.getValue()))));
} else if (entry.getKey().equalsIgnoreCase(Constants.QNT_GRANTED)) {
predicates.add(cb.and(cb.greaterThan(entitlement.get(entry.getKey()), entry.getValue())));
} else if (entry.getKey().equalsIgnoreCase(Constants.VALUE_GRANTED)) {
predicates.add(cb.and(cb.greaterThan(entitlement.get(entry.getKey()), entry.getValue())));
} else if (StringUtils.contains(entry.getValue(), Constants.COMMA)) {
predicates.add(
cb.and(entitlement.get(entry.getKey()).in(Arrays.asList(StringUtils.split(entry.getValue())))));
} else {
predicates.add(cb.and(cb.equal(entitlement.get(entry.getKey()), entry.getValue())));
}
}
}
或者我必须为每个操作制作每种方法?有什么建议么 ?
解决方案
推荐阅读
- power-automate - Power Automate 和 Microsoft Planner 中的每月存储桶
- windows - 如何使用在 Mac 上运行的 Goland 调试 Windows 构建?
- r - grid.arrange() 输出在 R Markdown 中添加空格和额外绘图
- jquery - 等待用户输入继续循环的下一次迭代?
- cloud - 二维码播放视频
- pic - 我不知道我是否为 PIC24F 正确初始化 ADC
- git - GIT Repo 错误:无法推送到远程存储库
- javascript - Sonarqube 问题“重构此方法以将其认知复杂度从 18 降低到允许的 15。” 重写代码块
- math - 如何减去两个正的 IEEE-754 数字?
- mule - Mule 支持 CDC 和 Streaming