java分页原理及实现方式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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分页。