基于MySQL的查询分页
物理分页
物理分页是直接使用SQL语句通过数据库的特性查询数据库,实现分页,每次从数据库中获取的数据都仅仅是一页的数据。
物理分页的好处就是效率高。
不好的地方就是不同数据库有不同的搞法,因为要依赖查询语句来查询数据库,所以不同的数据库,使用的分页语句也都不相同。
MySQL中的分页:使用limit关键字
1 | select * from student limit 0, 10 |
逻辑分页
逻辑分页就是一次性把数据查询出来,之所以叫逻辑分页就是因为每次从数据库查询数据时没有做分页,而是将取得的所有数据储存到内存缓存中,每次翻页是在内存中对数据做裁剪,取得数据。
逻辑分页的好处就是翻页的速度快,对于数量量比较小来说很适合,数据量大,最好采用物理分页,防止内存溢出。且逻辑分页并不依赖于数据库来实现,所以所有的数据库逻辑分页实现方案都一样。
逻辑分页方法:
- 根据条件sql查询数据库
- 得到ResultSet的结果集,由于ResultSet带有游标,因此可以使用其next()方法来指向下一条记录
- 利用next()方法,得到分页所需的结果集
通用的分页参数
参数概览
- 当前页(前端页面传参)
- 每页条数(前端页面传参)
- 总条数(从数据库中查询得到)
- 总页数(由总页数和每页条数计算得知)
- 每页要展示的数据
计算公式
假设数据库使用的是mysql, 第一页从1开始
- 总页数算法: 总条数 / 每页条数, 能整除就用商; 不能整除商+1
- 取当前页数据
- 开始位置:(当前页 - 1)* 每页条数
- 结束位置(使用与逻辑分页):当前页 * 每页条数
- 取多少条(适用于mysql物理分页):每页条数