Criteria.where 不等于 多条件
时间: 2024-01-04 19:02:45 浏览: 104
Criteria.where 可以用于构建多条件查询,包括等于、不等于、大于、小于等条件。下面是一个示例,展示如何使用 Criteria.where 进行不等于的多条件查询:
```
Criteria criteria = new Criteria();
criteria.andOperator(
Criteria.where("field1").ne("value1"),
Criteria.where("field2").ne("value2")
);
Query query = new Query(criteria);
List<MyObject> results = mongoTemplate.find(query, MyObject.class);
```
以上代码通过 Criteria.where 构建了两个不等于的条件,然后使用 andOperator 方法将它们组合成一个 AND 条件,最后使用 Query 对象进行查询。这样就可以查询出符合多个条件的数据了。
相关问题
Criteria.where 多条件
Criteria.where 可以用于构建多条件查询,以下是一个例子:
```
Criteria criteria = new Criteria();
criteria.andOperator(Criteria.where("name").is("John"), Criteria.where("age").gt(18));
Query query = new Query(criteria);
List<User> users = mongoTemplate.find(query, User.class);
```
这个例子中,我们使用了 Criteria.andOperator() 方法将两个条件进行了“与”操作,即查询满足 name 为 "John" 且 age 大于 18 的 User 记录。
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()))); }这个代码有什么问题 可以怎么修改
这段代码可以改进的地方有:
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);
}
```
这样修改后,代码更加严谨和易读。
阅读全文