MaongoDB分页查询实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
    }

猜你喜欢

转载自blog.csdn.net/xj80231314/article/details/89355191