MaongoDB分页查询实现

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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值