大家好,欢迎来到雄雄的小课堂,昨天分享了个分页工具类一个简单的分页工具类,其实,也是为今天的分享做的铺垫,今天,给大家带来的是javaweb实现分页的全过程!

前言:为什么需要分页?假设某大学有人数一万人,学生信息管理系统需要查询所有大学生的信息,那么就会将1w个学生的信息都查询的显示在页面中,管理员每次都需要不断的往下拖动页面才能浏览完所有学生信息,并且还容易看错行。有没有一种方法,既可以显示多条信息,又不用你拖动页面呢?答案当然是有的,那就是我们今天所有看的分页!

01

实现分页的方式

其实,实现分页的方式有好多种,一种是直接将需要查询的数据一次性查询出来,放在一个集合中,每次在集合中遍历出需要展示的数据即可。但是,这种方法是有缺点的,第一,看到的数据可能不是最新的,比如实时更新的数据(股票、外汇数据)肯定不能用这种方式。其次,如果数据库中有几万条数据的话,这么一次都查询出来往集合中扔,效率是非常低下的,耗时也很多。

第二种实现分页的方式就是,我们可以从数据库中查询我们每页所需要的数据,比如每页显示5条,那你就在数据库中查询5条,实时从数据库中查询,一来避免了数据库过大性能的问题,二来,由于每次都是从数据库中实时查询的,所以也就不会存在数据过期问题了。

今天,我们就用第二种方式来实现分页。

02

实现分页的步骤

1.确定页大小(每页显示的数据量)

这个其实很好理解,每页显示5条,就设置5条即可,每页显示10条,就设置10条,当然,这个每页显示的数据量也可以交给用户决定。

2.计算显示的总页数

有了每页显示的条数,在给你所有条数,你会不会算一共有多少页?就像一共有21个鸡蛋(总记录数)需要给篮子里面装,每个篮子最多只能放5(每页显示的数据量)个,那么你需要多少个篮子才能把21个鸡蛋都放完?怎么算?

21/5=4余1,余下来的这一个怎么办?当然是在找个篮子放进去,这样的话,我们就需要4+1个篮子。

数据也是这样的,如果有19条数据,每页显示5条,需要多少页?

19/5=3余4,那最后总页数就是3+1,4页!

思维转换到java中,代码如下:

总页数 = 总记录数%页大小==0?总记录数/页大小: 总记录数/页大小+1;

那有同学会问,老师,总记录数咋来的,你也没告诉我啊?总记录数我们只需要一条sql语句就搞定了,如下:

Selct count(*) from student;

3.写分页的sql语句

目前我们就以mysql为例,mysql中分页的语法如下:

Select * from student limit 0,5;

其中student为数据表0为偏移量,动态的,5为页大小,固定的。

假使我们取第一页数据,不需要便宜,那偏移量就是0,如果我们取第二页的数据,需要从第六条开始显示,需要越过第一页的1-5条数据,偏移量得从6开始,可以总结出一个规律,那就是:

偏移量=(当前页-1)*页大小

例如,第三页的偏移量,即:(3-1)*5=10;

今天我们就先看这些,明天将今天的理论知识运用到javaweb的代码中做一个具体的案例。

往期精彩

一个简单的分页工具类

2020-11-23

javaWeb中,如何通过Commons-FileUpload组件上传文件

2020-11-22

多功能语音播放器

2020-11-21

CSS动画示例(上一篇是CSS过渡…)

2020-11-20

CSS3中的动画示例

2020-11-19

CSS3的几个变形案例……

2020-11-18

点分享

点点赞

点在看

javaweb中实现分页,持续更新……相关推荐

  1. 【20160612-20160618】记一周省常中训练(持续更新,欢迎催更)

    挖坑,持续更新. #include <cstdio> using namespace std; int main(){puts("转载请注明出处:http://www.cnblo ...

  2. ROS与gazebo中常见问题【持续更新中】

    ROS中常见问题 [gazebo] Spawn service failed. Exiting gazebo模型与服务器 gazebo中添加动态障碍物 [actor] [ROS] rosdep ins ...

  3. [Python+MATLAB] 在Python中使用MATLAB (持续更新中)

    文章目录 在Python中安装MATLAB引擎 官方介绍 个人介绍 结果演示 常见用法 一些tips: 使用Python能使用MATLAB的函数吗? 答案是可以的! The MATLAB Engine ...

  4. Android Studio开发过程中BUG解决方案——持续更新

    Android Studio开发过程中BUG解决方案: android萌新打怪升级之旅:android项目开发BUG集成 起笔时间:2022.5.20 版本:2021.2.1 问题描述1:无法查看/d ...

  5. 英语中元音辅音-持续更新中

    小学五年级时,报了思达特英语培训班,从初中到高中再到高考128分  总之是英语再随便考也不会不及格 那时我们学的是26个辅音.18个元音  每个音的发音.音标.以及相关单词.反复训练 但最新的国际音标 ...

  6. Enum类的非一般用法汇总(工作中遇到时持续更新)

    1.  每个枚举实例定义一套自己的方法示例: 1 @AllArgsConstructor2 public enum BroadcastTypeEnum {3 ALL(0, "全站" ...

  7. eclipse 在 Linux中常用命令,持续更新....

    1. mvn eclipse:clean 2. mvn eclipse:eclipse -Dwtpversion=1.0 1.jdk安装 首先可以使用命令直接进行jdk安装 sudo apt-get ...

  8. C语言中的常用库宏--持续更新

    c语言中的宏/持续更新 limits.h 名字 值 说明 CHAR_BIT 8 定义了一个字节中的比特数 SCHAR_MIN -127 定义最小值签署的字符 SCHAR_MAX 127 定义最大值签署 ...

  9. JDK 7-JDK 21:Oracle Java SE 支持路线图/Oracle Java SE Support Roadmap 持续更新

    文章目录 前言 一.Oracle Java SE 产品版本 二.Java SE 8 的公共更新结束 三.参考文档 总结 前言 几十年来,Java 生态系统已经成功地经历了这个过程,经历了十次主要的平台 ...

最新文章

  1. 2020陕西高考全省理科最高分725、文科最高分700
  2. Softmax算法:逻辑回归的扩展
  3. 3.12PMP试题每日一题
  4. dubbo 消费者也要暴露端口吗_一文详细解读 Dubbo 中的 http 协议
  5. java的选项板_CAD工具选项板的介绍以及新建方法
  6. postgres 判断null_PostgreSQL NULLIF()用法及代码示例
  7. android中 MediaStore提取缩略图和原始图像
  8. C语言宏定义中UL的含义
  9. 理解各种聚类算法的差异
  10. Bailian2941 Bailian3225 满足条件的整数【枚举+开方】
  11. Excel Spreadsheet 转换web HTML 5 展示
  12. 转 TCP中的序号和确认号
  13. thinkPHP 空模块和空操作、前置操作和后置操作 详细介绍(十四)
  14. 【图像修复】基于matlab GUI三维图像复原【含Matlab源码 963期】
  15. matlab 扩大虚拟内存,matlab 扩大虚拟内存
  16. 五、pygame做一个简单的五子棋游戏
  17. oracle 日志查看教程,Oracle 查看日志
  18. Windows Azure 成为业内首家被授权为 FedRAMP JAB P-ATO 的供应商
  19. Notepad++ 安装XML Tools插件格式化XML文件
  20. 使用VirtualBox创建虚拟机

热门文章

  1. [蓝桥杯2018初赛]乘积尾零-数论
  2. java 第三方序列化,11.既然有第三方的序列化方式,说明java官方提供的序列化方式应该有一些很明显或者很致命的缺点……...
  3. SMOTE/SMOTEEN 处理不平衡数据集
  4. Java10 新特性
  5. 类欧几里得(模板题推导)
  6. UOJ#191. 【集训队互测2016】Unknown
  7. P2305 [NOI2014]购票
  8. 牛客题霸 [ 最小的K个数] C++题解/答案
  9. Codeforces Round #709 (Div. 2, based on Technocup 2021 Final Round) 题解
  10. 【李超树】李超线段树维护凸包(凸壳) (例题:blue mary开公司+线段游戏+ZZH的旅行)