一、什么是分页技术
分页,是一种将所有数据分段展示给用户的技术。用户每次看到的不是全部数据,而是其中的一部分,如果在其中没有找到自习自己想要的内容,用户可以通过制定页码或是翻页的方式转换可见内容,直到找到自己想要的内容为止。其实这和我们阅读书籍很类似。
二、分页的意义
- 数据方面的原因
- 增强用户使用体验需要
分页确实有效,但它一定会加大系统的复杂度,但可否不分页呢?如果数据量少的话当然可以,但是对于企业信息系统来说数据量不会限制在一个小范围内。如果不顾一切的Select * from某个表,再将返回的数据一古脑的扔给客户,即使客户能够忍受成千上万足够让人眼花缭乱的表格式数据,繁忙的网络,紧张的服务器也会提出它们无声的抗议,甚至有时会以彻底的罢工作为终结。
三、网页常见分页样式
- 传统的分页方式——带有分页工具栏
- 下拉式分页——时尚炫酷
采用传统的分页方式,可以明确的获取数据信息,如有多少条数据,分多少页显示等。
采用下拉式的分页方式,一般无法明确的获取数据数量相关的信息,但是分页操作后仍然能看到之前查询的数据。
四、常见的分页实现方式
- 使用List接口中的subList(int startIndex ,int endIndex)方法实现分页
- 直接使用数据库SQL语句实现分页
- 使用hibernate、mybatis等框架实现跨数据库分页
五、使用subList()实现分页
如从第3条数据开始,取4条数据:
dataList.subList(2,6);
六、使用SQL语句实现分页
利用数据库自带的分页语法,使用分页语句,获取分页数据(如mysql数据库使用limit关键字,oracle中使用rownum关键字等)
如从学生表(t_student)中查询前10条数据:
MySQL查询语句:
select * from t_student limit 0,10;
PostgreSQL查询语句:
select * from t_student limit 10 offset 0;
Oracle查询语句:
select * from
(
select s.*,rownum rn
from (select * from t_student)s
where rownum <= 10
)
where rn >= 1
七、使用hibernate框架实现分页
创建Query或者Criteria对象,查询时,设置firstResult和maxResults属性。
String hql="from Student";
Query q=session.createQuery(hql);
q.setFirstResult(0);
q.setMaxResults(10);
List l=q.list();
八、分页实现方式的比较
实现方式 | 优点 | 缺点 | 适用场景 |
subList | 简单、易用 | 效率低 | 无法按需批量获取数据 |
SQL语句 | 简单、直接、效率高 | 数据库兼容差 | 不要求数据库兼容 |
Hibernate框架 | 面向对象、兼容性强 | 复杂查询性能低 | 兼容不同数据库 |