java数据分页几种方式

1.使用PageUtils

Service:
  /**
     * 分页查询
     *
     * @param params 查询条件
     * @return PageUtils
     */
    PageUtils queryPage(Map<String, Object> params);
    
ServiceImpl:
  Page<数据库对象实体> page = this.selectPage(
                new Query<数据库对象实体>(params).getPage(),
                new EntityWrapper<数据库对象实体>()
                		//MybatisPlus sql语句
                        .eq(字段,"匹配值")
                        //具体用法详情百度
                        .orderBy(按照排序的数据库字段, true)
        );

        return new PageUtils(page);

2.使用Page

Service:
    /**
     * 分页查询
     * @param params 查询条件
     * @return 
     */
    Page<数据库对象实体>  queryPage(Map<String, Object> params);
    
ServiceImpl:
  Page<数据库对象实体> page = new Page<>(Public.mapTo(params.get("page"), 1), Public.mapTo(params.get("pageSize"), 10));
  		//可以手写sql,提高sql的灵活性(但是题主人懒,还是喜欢使用 MysqlbatisPlus 那种方式),但是可以锻炼你的SQL书写能力
        List<数据库对象实体> list = Dao.方法名(page, params);
        Page<数据库对象实体> pageInfo = page.setRecords(list);
        return pageInfo;
        
Dao:
List<数据库对象实体> 方法名 (Pagination page,Map<String, Object> map);
//具体的SQL就不写了

3.Jpa分页

需要一个分页类   Page4Navigator
Page<T> pageFromJPA;
    int navigatePages;
     
    int totalPages;
 
    int number;
     
    long totalElements;
     
    int size;
 
    int numberOfElements;
 
    List<T> content;
 
    boolean isHasContent;
 
    boolean first;
 
    boolean last;
     
    boolean isHasNext;
 
    boolean isHasPrevious;
     
    int[] navigatepageNums;
     
    public Page4Navigator() {
        //这个空的分页是为了 Redis 从 json格式转换为 Page4Navigator 对象而专门提供的
    }
     
    public Page4Navigator(Page<T> pageFromJPA,int navigatePages) {
        this.pageFromJPA = pageFromJPA;
        this.navigatePages = navigatePages;
         
        totalPages = pageFromJPA.getTotalPages();
         
        number  = pageFromJPA.getNumber() ;
         
        totalElements = pageFromJPA.getTotalElements();
         
        size = pageFromJPA.getSize();
         
        numberOfElements = pageFromJPA.getNumberOfElements();
         
        content = pageFromJPA.getContent();
         
        isHasContent = pageFromJPA.hasContent();
                 
        first = pageFromJPA.isFirst();
         
        last = pageFromJPA.isLast();
         
        isHasNext = pageFromJPA.hasNext();
         
        isHasPrevious  = pageFromJPA.hasPrevious();       
         
        calcNavigatepageNums();
         
    }
 
    private void calcNavigatepageNums() {
        int navigatepageNums[];
        int totalPages = getTotalPages();
        int num = getNumber();
        //当总页数小于或等于导航页码数时
        if (totalPages <= navigatePages) {
            navigatepageNums = new int[totalPages];
            for (int i = 0; i < totalPages; i++) {
                navigatepageNums[i] = i + 1;
            }
        } else { //当总页数大于导航页码数时
            navigatepageNums = new int[navigatePages];
            int startNum = num - navigatePages / 2;
            int endNum = num + navigatePages / 2;
 
            if (startNum < 1) {
                startNum = 1;
                //(最前navigatePages页
                for (int i = 0; i < navigatePages; i++) {
                    navigatepageNums[i] = startNum++;
                }
            } else if (endNum > totalPages) {
                endNum = totalPages;
                //最后navigatePages页
                for (int i = navigatePages - 1; i >= 0; i--) {
                    navigatepageNums[i] = endNum--;
                }
            } else {
                //所有中间页
                for (int i = 0; i < navigatePages; i++) {
                    navigatepageNums[i] = startNum++;
                }
            }
        }  
        this.navigatepageNums = navigatepageNums;
    }

Controller

Page4Navigator<数据库对象实体> page =Service.方法名(start, size, 5);  //5表示导航分页最多有5个,像 [1,2,3,4,5] 这样

Service

	public Page4Navigator<数据库对象实体> list(int start, int size, int navigatePages) {
		Sort sort = new Sort(Sort.Direction.DESC, "id");
		//集成好的分页查询
		Pageable pageable = new PageRequest(start, size,sort);
		Page pageFromJPA =categoryDAO.findAll(pageable);
		return new Page4Navigator<>(pageFromJPA,navigatePages);
	}

有问题请多多指教,共勉

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值