Query query = new Query(); query.addCriteria(Criteria.where("delStatus").is(false)); query.addCriteria(Criteria.where("vin").in(vinList)); if (!StringUtils.isEmpty(queryDto.getKeyWord())){ query.addCriteria(new Criteria().orOperator(Criteria.where("plateNo").regex(queryDto.getKeyWord()) ,Criteria.where("vin").regex(queryDto.getKeyWord()))); }这个代码有什么问题 可以怎么修改
时间: 2024-01-29 15:16:44 浏览: 151
条件类Criteria的用法.docx
这段代码可以改进的地方有:
1. 需要判断 vinList 是否为空,如果为空则不需要添加查询条件。
2. 需要判断 keyWord 是否为空,如果为空则不需要添加模糊查询条件。
3. 如果 keyWord 不为空,建议给正则表达式加上边界符号,如 "^" 和 "$",以避免出现不必要的匹配结果。
下面是修改后的代码:
```
Query query = new Query();
query.addCriteria(Criteria.where("delStatus").is(false));
if (!CollectionUtils.isEmpty(vinList)) {
query.addCriteria(Criteria.where("vin").in(vinList));
}
if (StringUtils.hasText(queryDto.getKeyWord())) {
String keyWord = queryDto.getKeyWord().trim();
Criteria criteria = new Criteria().orOperator(
Criteria.where("plateNo").regex("^" + keyWord + "$", "i"),
Criteria.where("vin").regex("^" + keyWord + "$", "i")
);
query.addCriteria(criteria);
}
```
这样修改后,代码更加严谨和易读。
阅读全文