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)进行降序排列的。

  • 相关阅读:
    Java-注解(@Annotation)
    面试(三)---volatile
    面试(二)---synchronized
    Linux使用技巧(一):vim中选中多行、复制和粘贴
    Git——学习Git
    【Linux】Linux下cp ~中关于“~”的疑问
    【Linux】Linux中cd test和cd /test以及类似命令的区别
    【Linux】Linux系统中/opt 和 /usr目录
    【Linux】Linux的文件权限
    读《大数据时代下半场-数据治理、驱动与变现》--1
  • 原文地址:https://www.cnblogs.com/bien94/p/13187292.html
Copyright © 2011-2022 走看看