JDBC 分页原理及实现

一、什么是分页技术

分页,是一种将所有数据分段展示给用户的技术。用户每次看到的不是全部数据,而是其中的一部分,如果在其中没有找到自习自己想要的内容,用户可以通过制定页码或是翻页的方式转换可见内容,直到找到自己想要的内容为止。其实这和我们阅读书籍很类似。

二、分页的意义

  • 数据方面的原因
  • 增强用户使用体验需要

分页确实有效,但它一定会加大系统的复杂度,但可否不分页呢?如果数据量少的话当然可以,但是对于企业信息系统来说数据量不会限制在一个小范围内。如果不顾一切的Select * from某个表,再将返回的数据一古脑的扔给客户,即使客户能够忍受成千上万足够让人眼花缭乱的表格式数据,繁忙的网络,紧张的服务器也会提出它们无声的抗议,甚至有时会以彻底的罢工作为终结。

三、网页常见分页样式

  • 传统的分页方式——带有分页工具栏

JDBC 分页原理及实现_第1张图片

  • 下拉式分页——时尚炫酷

    JDBC 分页原理及实现_第2张图片

采用传统的分页方式,可以明确的获取数据信息,如有多少条数据,分多少页显示等。
采用下拉式的分页方式,一般无法明确的获取数据数量相关的信息,但是分页操作后仍然能看到之前查询的数据。

四、常见的分页实现方式

  • 使用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框架 面向对象、兼容性强 复杂查询性能低 兼容不同数据库

你可能感兴趣的:(Java,JDBC)