zoukankan      html  css  js  c++  java
  • Java中分页查询MongoDB数据

      在Java中操作MongoDB时会遇到分页查询数据的情况,此时我们可以按如下步骤来实现:

      1、创建一个分页类

    import org.springframework.data.domain.PageRequest;
    import org.springframework.data.domain.Pageable;
    import org.springframework.data.domain.Sort;
    
    public class MongoDbPageable implements Pageable {
        /**分页码*/
        private int pageNumber = 1;
        /**每页大小*/
        private int pageSize = 10;
        /**排序*/
        private Sort sort;
    
        @Override
        public int getPageNumber() {
            return pageNumber;
        }
    
        public void setCurrentPage(int pageNumber) {
            this.pageNumber = pageNumber;
        }
    
        @Override
        public int getPageSize() {
            return pageSize;
        }
    
        public void setPageSize(int pageSize) {
            this.pageSize = pageSize;
        }
    
        @Override
        public Sort getSort() {
            return sort;
        }
    
        public void setSort(Sort sort) {
            this.sort = sort;
        }
    
        @Override
        public long getOffset() {
            return (pageNumber - 1) * pageSize;
        }
    
        @Override
        public Pageable first() {
            return PageRequest.of(0, pageSize, sort);
        }
    
        @Override
        public boolean hasPrevious() {
            return false;
        }
    
        @Override
        public Pageable next() {
            return PageRequest.of(pageNumber + 1, pageSize, sort);
        }
    
        @Override
        public Pageable previousOrFirst() {
            return pageNumber == 0 ? this : PageRequest.of(pageNumber - 1, pageSize, sort);
        }
    }

      2、分页类的实践

    private List<Object> find(int pageNumber, int pageSize,  Sort.Direction direction){
             MongoDbPageable pageable = new MongoDbPageable();
             pageable.setCurrentPage(pageNumber);
             pageable.setPageSize(pageSize);
             // direction: Sort.Direction.DESC或者Sort.Direction.ASC
             Sort sort = new Sort(direction, "_id");
             pageable.setSort(sort);
             Query query = new Query();
             query.with(pageable);
             return mongoTemplate.find(query, Object.class, collectionName);
         }

      说明:分页类具有排序的功能,实践中是按照ObjectId(_id)进行降序排列的。

  • 相关阅读:
    c语言网络编程过程及函数说明
    c代码编译完整过程详解
    const关键字的常见作用
    c语言中static关键字的几个作用
    c语言结构体中字节对齐方式
    modbus协议数据格式
    CodeForces
    如何在Dev-Cpp中使用C++11中的函数:stoi、to_string、unordered_map、unordered_set、auto
    关于lower_bound( )和upper_bound( )的常见用法
    CodeForces 600C——思维
  • 原文地址:https://www.cnblogs.com/bien94/p/13187292.html
Copyright © 2011-2022 走看看