java分页原理及实现方式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java分页原理及常用分页方法

什么是分页技术

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

为什么要分页?

1、加载少量数据,减少客户的和服务器数据交互,降低服务器压力。

2、增强用户体验,每次加载数据量少,加载速度自然就快,用户体验就好。

常见分页样式:

1、传统分页(分页工具栏),如百度的分页:

2、自动加载:如QQ空间下拉自动加载数据

传统分页与下拉式分页对比

传统分页可以明确数据信息,数量等;

下拉式无法明确数据量等信息,分页后之前从信息还在页面上。

常见分页实现方式

1.Java程序分页的实现主要是用List接口中的subList(intstartIndex,intendIndex)方法,

这种方式也称为程序内存分页。

2.使用数据库的SQL语句实现数据分页。适用于数据量较大,访问频度较低的操作。如

果数据量大,访问频度又高,可以参考大数据分页。

关于内存分页

当数据量较小时推荐使用。使用subList进行分页时,如果数据量比较大是一个非常耗费系统资源的方案。

目前web项目有许多分布式系统,可能有多个系统访问同一个数据库,那么对数据库的开销就比较大了,这时可以考虑对内存分页进行优化,例如利用程序缓存处理机制等。

其实真正的内存分页不是那么简单的事情,要实现一个完整的通用的机制,不是一两个小时就能搞定的。首先有一个数据记录的服务器缓存问题,然后才是数据记录分页问题,这个相对好解决一点,但第一个问题就不太好组织。因为缓存问题涉及到数据的缓存位置,缓存时间,删除时间和利于查询的数据组织问题。

数据库分页:

数据库分页的原理比较明确了,根据需要取结果集中的一部分就是了,没什么好说的。其实这样有时候数据缓存在数据库系统内,可能比内存分页要智能一点。

SQL分页

使用SQL语句实现分页

使用数据库自带的分页语法,获取分页数据,如MySQL的limit关键字,oracle的rownum 关键字等

以下是常见的分页SQL语句

1.MySQL分页查询语句:

Select * from t_table limit 1,10;

2.PostgreSQL分页查询语句

Select * from t_table limit 10 offset 0;

3.Oracle分页查询SQL:

Select * from (

Select t.*,rownumrn from t_table t where rownum<=10

) where rn>=1;

4.使用hibernate框架进行分页:

创建query或者Criteria对象,查询时,设置firstResult和maxResult属性

eg:

String hql = “from student_table”;

Query q = session.createQuery(hql);

q.setFirstResult(0);

q.setMaxResult(10);

List l = q.list();

5.Mybatis分页

由于mybatis的SQL语句一般都是通过配置文件手工写的,可以直接参考SQL分页。

相关文档
最新文档