版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xj80231314/article/details/89355191
Criteria:
它封装所有的语句,以方法的形式进行查询
Query类:
这是将语句进行封装或者添加排序之类的操作
常用的:
描述 | 方法 |
---|---|
大于 | gt |
大于等于 | gte |
小于 | lt |
大于等于 | lte |
等于 | is |
包含 | in |
模糊匹配 | regex |
动态分页查询代码实现:
public Page<Book> findByCondition(ActivityQueryCondition activityQueryCondition) {
checkParams(activityQueryCondition);
Pageable pageable = new PageRequest(activityQueryCondition.getPage() - 1, activityQueryCondition.getPageSize());
Criteria criteria = new Criteria();
// 书号
if (!StringUtils.isEmpty(activityQueryCondition.getBookIsbn())) {
criteria.and("isbn").is(activityQueryCondition.getBookIsbn());
}
// 商品名称
if (!StringUtils.isEmpty(activityQueryCondition.getBookName())) {
criteria.and("goodsName").regex(activityQueryCondition.getBookName());
}
// 作者
if (!StringUtils.isEmpty(activityQueryCondition.getWriterName())) {
criteria.and("writer").regex(activityQueryCondition.getWriterName());
criteria.
}
// 出版社
if (!StringUtils.isEmpty(activityQueryCondition.getPublisherName())) {
criteria.and("publisherName").regex(activityQueryCondition.getPublisherName());
}
// 商品分类
if (!CollectionUtils.isEmpty(activityQueryCondition.getGoodsTypeCodeList())) {
criteria.and("category").in(activityQueryCondition.getGoodsTypeCodeList());
}
Page<Book> page = bookRepository.findByCondition(criteria, pageable);
return page;
}
public Page<Book> findByCondition(Criteria criteria, Pageable pageable) {
Query query = new Query(criteria);
long count = mongoTemplate.count(query, Book.class);
query.with(pageable);
Sort createTime = new Sort(Sort.Direction.DESC, "createTime");
query.with(createTime);
List<Book> takingStockRules = mongoTemplate.find(query, Book.class);
Page<Book> page = new PageImpl(takingStockRules, pageable, count);
return page;
}