最近在做毕业设计,界面要用到分页技术,于是就将自己所整理的以及思考的结果整理出来给大家分享,希望对你们有所帮助。
首先分页要用到4个属性
pageNow:当前页
pageSize:每页条数
pageCount:总页数
rowCount:总条数
其中rowCount可以通过查询获得,而pageCount可以通过计算获得。
- <pre name="code" class="java">if(rowCount%pageSize==0){
- pageCount=rowCount/pageSize;
- }else{
- pageCount=rowCount/pageSize+1;</pre><br><br>
不过这段代码完全可以简化位一句:
pageCount=(rowCount+pageSize-1)/pageSize;//计算总页数
下面给出详细的算法和分析:
- public ArrayList<UserBean> getUsersByPage(String sql,int pageSize,int pageNow){
- ArrayList<UserBean> al=new ArrayList<UserBean>();
- try {
- Connection conn=this.getConn();
- System.out.println(conn);
- ps=conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
- rs=ps.executeQuery();
- rs.last();//光标指向查询结果集中的最后一条记录
- int rowCount=rs.getRow();//获取记录总数
- int pageCount=(rowCount+pageSize-1)/pageSize;//计算总页数
- if(pageNow>pageCount) pageNow=pageCount;
- if(pageNow<1) pageNow=1;
- if(pageCount>0){
- /*将记录定位到待显示页的第一条记录上,absolute(int row)函数
- * 表示将记录移动指定的row行中*/
- rs.absolute((pageNow-1)*pageSize+1);
- int i=0;//设置计数器
- //i小于pageSize并且光标还没移动到最后一行记录的后面
- while(i<pageSize&&!rs.isAfterLast()){
- UserBean ub=new UserBean();
- ub.setUserid(rs.getInt(1));
- ub.setUsername(rs.getString(2));
- ub.setTruename(rs.getString(3));
- ub.setEmail(rs.getString(4));
- ub.setPhone(rs.getString(5));
- ub.setAdress(rs.getString(6));
- ub.setPostcode(rs.getString(7));
- ub.setGrade(rs.getInt(8));
- rs.next();
- i++;
- al.add(ub);
- }
- }
- } catch (Exception e) {
- // TODO: handle exception
- e.printStackTrace();
- }finally{
- this.close();
- }
- return al;
- }
其中ps=conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)中必须用到可滚动的结果集TYPE_SCROLL_INSENSITIVE,表示rs指针可再结果集上前后滚动移动,rs.last()就表示了这个用法。
而getConn()为数据库连接函数,close()为关闭资源函数,还有一个UserBean的get和set函数,这些应该是不难的。
有不理解或是不足的地方欢迎提出!
csdn原文:http://blog.csdn.net/zjtimef/article/details/12688903
相关推荐
用PHP编写的分页函数,配合bootstrap的css文件,分页会更好看
此外,我们还可以使用ROW_NUMBER()函数算法来实现数据分页。该算法可以将大量数据分割成多个小的数据块,以提高查询效率和减少数据传输量。例如,我们可以使用以下语句来实现数据分页: ``` WITH temp AS ( SELECT ...
1. 数据库层面优化:在数据库查询时,可以使用LIMIT和OFFSET关键字(MySQL)或者ROW_NUMBER()函数(SQL Server)进行分页查询,避免加载全部数据。 2. 缓存:对于不常变动的数据,可以考虑使用缓存(如Redis)存储...
在`PageBean`的构造函数中,可以计算出初始的分页信息。例如,当用户访问第一页时,可以根据`totalRows`和`pageRecorders`计算`totalPages`。如果`totalRows`能被`pageRecorders`整除,那么`totalPages`等于`...
MySQL 海量数据库的查询优化及分页算法方案 在大规模数据库中,查询优化和分页算法是两个非常重要的方面。本文将详细介绍 MySQL 海量数据库的查询优化和分页算法方案。 一、查询优化 查询优化是指通过调整查询...
1. **基于RowNum的分页**:在SQL Server中,可以使用ROW_NUMBER()函数结合OVER子句实现分页。通过设置PARTITION BY和ORDER BY,确定每一页的数据顺序,并通过WHERE子句筛选出指定范围的行。 2. **基于Limit的分页**...
2. **RowNumber/Rank函数**:在某些数据库系统中,如SQL Server和Oracle,可以使用行号函数(如`ROW_NUMBER()`,`RANK()`,`DENSE_RANK()`)配合窗口函数进行分页,这样可以避免`OFFSET`的效率问题。 3. **分页缓存...
根据提供的标题、描述以及部分代码内容,我们可以总结出以下关于分页算法的知识点: ### 分页算法概述 分页算法是计算机科学中的一个重要概念,在Web开发中尤其常见。它的主要目的是将大量的数据按照一定的规则...
### 分页算法在Java中的实现解析 #### 引言 分页是数据处理中的一个常见需求,尤其是在Web应用中,为了提升用户体验和减轻服务器压力,将大量数据分批展示是必要的。本文将深入分析一段Java代码,该代码实现了分页...
### DREAMWEAVER的分页算法ASP #### 背景介绍 Dreamweaver是一款由Adobe公司开发的专业网页设计工具,它可以帮助开发者快速构建、编辑以及管理网站内容。随着互联网的发展,数据量逐渐增大,如何高效地展示大量...
【请求分页系统页面置换算法】是操作系统中虚拟存储管理的重要组成部分,用于处理因物理内存不足而需要将页面调出到磁盘上的情况。实验报告的主题聚焦于利用Vc++编程实现三种常见的页面置换算法:Optimal(最优)、...
例如,在C++实现FIFO算法时,可以定义一个队列结构来存储页面,并在`FIFO()`函数中进行具体操作,如插入新页面、检查是否缺页、淘汰最旧页面等。在实际编程时,需要考虑如何记录页面的到达时间或访问状态,以便正确...
### 请求分页系统页面淘汰算法 #### 一、实验背景及目标 在现代计算机系统中,内存管理和虚拟存储技术是操作系统的重要组成部分。其中,请求分页系统是一种常用的虚拟存储技术,它允许进程只将部分页面加载到物理...
第三种方法是使用MAX函数结合TOP语句来实现分页。这种方法的关键在于,通过递归地查找当前页之前的最大ID值,然后基于这个值进行筛选,获取当前页的数据。 #### 实现细节: 1. **计算前一页最大ID**:通过`SELECT ...
WAMP架构记录分页算法研究 一、WAMP架构概述 WAMP架构是一种开源、免费、跨平台的组合,主要由Windows、Apache、MySQL和PHP四部分组成。这种架构的核心功能是通过PHP脚本语言来存取MySQL数据库或直接与操作系统...