JavaWeb分页实现总结

基于MySQL的查询分页

物理分页

物理分页是直接使用SQL语句通过数据库的特性查询数据库,实现分页,每次从数据库中获取的数据都仅仅是一页的数据。

物理分页的好处就是效率高。

不好的地方就是不同数据库有不同的搞法,因为要依赖查询语句来查询数据库,所以不同的数据库,使用的分页语句也都不相同。

MySQL中的分页:使用limit关键字

1
2
select * from student limit 0, 10
-- 表示的是从第0条开始取,取10条数据

逻辑分页

逻辑分页就是一次性把数据查询出来,之所以叫逻辑分页就是因为每次从数据库查询数据时没有做分页,而是将取得的所有数据储存到内存缓存中,每次翻页是在内存中对数据做裁剪,取得数据。

逻辑分页的好处就是翻页的速度快,对于数量量比较小来说很适合,数据量大,最好采用物理分页,防止内存溢出。且逻辑分页并不依赖于数据库来实现,所以所有的数据库逻辑分页实现方案都一样。

逻辑分页方法:

  • 根据条件sql查询数据库
  • 得到ResultSet的结果集,由于ResultSet带有游标,因此可以使用其next()方法来指向下一条记录
  • 利用next()方法,得到分页所需的结果集

通用的分页参数

参数概览

  • 当前页(前端页面传参)
  • 每页条数(前端页面传参)
  • 总条数(从数据库中查询得到)
  • 总页数(由总页数和每页条数计算得知)
  • 每页要展示的数据

计算公式

假设数据库使用的是mysql, 第一页从1开始

  • 总页数算法: 总条数 / 每页条数, 能整除就用商; 不能整除商+1
  • 取当前页数据
    • 开始位置:(当前页 - 1)* 每页条数
    • 结束位置(使用与逻辑分页):当前页 * 每页条数
    • 取多少条(适用于mysql物理分页):每页条数