用了这么久的PageHelper,你知道原生的分页查询原理和步骤吗? 您所在的位置:网站首页 pagehelper分页怎么用 用了这么久的PageHelper,你知道原生的分页查询原理和步骤吗?

用了这么久的PageHelper,你知道原生的分页查询原理和步骤吗?

2023-03-14 11:16| 来源: 网络整理| 查看: 265

一、分页查询概述

分页查询则是在页面上将本来很多的数据分段显示,每页显示用户自定义的行数。可提高用户体验度,同时减少一次性加载,内存溢出风险。

1.1、分页查询分类 1.1.1、真分页

每次翻页从数据库中查询数据。

优点:不容易造成内存溢出。 缺点:实现复杂,性能相对低。 1.1.2、假分页

一次性查询所有数据存入内存,翻页从内存中获取数据。

优点:实现简单,性能高。 缺点:容易造成内存溢出。 1.2、分页效果

发送请求访问一个带有分页页面的数据,会发现其主要由两部分组成:

当前页的结果集数据,比如这一页有哪些商品信息。 分页条信息,比如包含【首页】【上页】【下页】【末页】等。

二、分页的设计 2.1、分页需要传递的参数 2.1.1、用户需要传入的参数 currentPage:当前页,跳转到第几页,int 类型,设置默认值,比如 1。 pageSize:每页最多多少条数据,int 类型,设置默认值,比如 10。 2.1.2、分页需要展示的数据 start:首页。 prevPage:上一页。 nextPage:下一页。 totalPage:末页页码。 totalCounts:总记录数。 currentPage:当前页。 pageSize:每页记录数。 2.1.3、分页需展示的数据的来源 来源于用户传入: currentPage: 当前页,int 类型。 pageSize: 每页显示多少条数据,int 类型。 来源于两条 SQL 查询: totalCount/rows: 数据总条数,int 类型。 data/list: 每一页的结果集数据,List 类型。 来源于程序计算: totalPage: 总页数/末页,int 类型。 prevPage: 上一页,int 类型。 nextPage: 下一页,int 类型。 2.2、分页原理

结果总数(totalCount/rows)和结果集(data/list)是来源于两条 SQL:

第一条SQL:查询总数,返回一个数字(总记录数)。 select count(*) from province 查询符合条件的结果集(返回一个结果集)。 # 他有两个参数,一个是起始页的页码,另一个是每页记录数 # start :(currentPage - 1) * pageSize # pageSize: 前台给予 select * from province limit #{start} ,#{pageSize} 计算出其余的参数(总页数、上一页、下一页) // 分页数据通过这个 构造器 封装好 public PageResult(int currentPage, int pageSize, int totalCount, List data) { this.currentPage = currentPage; this.pageSize = pageSize; this.totalCount = totalCount; this.data = data; // 计算总页数(要先算) this.totalPage = totalCount % pageSize == 0 ? totalCount / pageSize : totalCount / pageSize + 1; // 利用 三元运算符 来计算上一页,如果已经是第一页的话,那么他就不会有上一页,让他的上一页为第一页,否则就当前页减1为上一页 this.prevPage = currentPage - 1 >= 1 ? currentPage - 1 : 1; // 利用三元运算符计算下一页,如果已经是最后一页的话,那么就没有下一页了,就不让他下一页再增加,否则就当前页自增 this.nextPage = currentPage + 1 = 1 ? currentPage - 1 : 1; // 利用三元运算符计算下一页,如果已经是最后一页的话,那么就没有下一页了,就不让他下一页再增加,否则就当前页自增 this.nextPage = currentPage + 1


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有