jdbc结合sqlserver的javaWeb工程的分页查询共通操作代码

本文介绍了如何在使用jdbc连接SQLServer的JavaWeb项目中实现分页查询。提供了一个PageInfo类用于存储分页信息,并通过PageSearchUtil类处理分页查询的通用操作。该类考虑了SQLServer的不同版本,使用了row_number()函数进行排序和分页,同时给出了Action代码和自定义标签的使用示例。
摘要由CSDN通过智能技术生成

搜索这个标题找到一篇文章:

适用所有使用jdbc结合sqlserver的javaWeb工程的分页查询共通操作代码

http://alexlsg.iteye.com/blog/700015


看了之后,试运行了一下。发现不可以用。

原因:row_number()是sql2005及以后版本的函数。而sql2000是没有的。

故此重新梳理了一下。


1、分页查询时需要用到的分页信息实体类 




import java.io.Serializable;


/** 
 * 适用于所有的使用jdbc结合sqlserver的web工程 
 *  
 * 
 * @author ycglei886 
 */  
public class PageInfo implements Serializable {  
    private static final long serialVersionUID = 7126509565385142115L;  
      
    /** 
     * 记录总数(该属性由PageSearchUtil设置) 
     *  
     */  
    private int recordCount;  
      
    /** 
     * 每页面最大记录数(该属性在传入PageSearchUtil的getPageResultSet方法之前需要设置) 
     *  
     */  
    private int pageSize;  
      
    /** 
     * 总页数(该属性由本类的compute方法计算得出) 
     *  
     */  
    private int pageCount;  
      
    /** 
     * 每部分页数(假如总共有100页,那么我们不可能将100页的页码都显示在页面上,只能部分部分的显示,该属性就是设置部分显示多少页的) 
     *  该属性与compute方法无关,在PageSearchUtil中也不会用到,但我们在页面上会用到 
     */  
    private int partPageCount = 10;  
      
    /** 
     * 当前是第几页(该属性在传入PageSearchUtil的getPageResultSet方法之前需要设置) 
     *  
     */  
    private int currentPage;  
      
    /** 
     * 开始记录数(该属性由本类的compute方法计算得出) 
     *  
     */  
    private int startRecord;  
      
    /** 
     * 结束记录数(该属性由本类的compute方法计算得出) 
     *  
     */  
    private int endRecrod;  
  
    public int getCurrentPage() {  
        return currentPage;  
    }  
  
    public void setCurrentPage(int currentPage) {  
        this.currentPage = currentPage;  
    }  
  
    public int getEndRecrod() {  
        return endRecrod;  
    }  
  
    public int getPageCount() {  
        return pageCount;  
    }  
      
    public int getPartPageCount() {  
        return partPageCount;  
    }  
  
    public void setPartPageCount(int partPageCount) {  
        this.partPageCount = partPageCount;  
    }  
  
    public int getPageSize() {  
        return pageSize;  
    }  
  
    public void setPageSize(int pageSize) {  
        this.pageSize = pageSize;  
    }  
  
    public int getRecordCount() {  
        return recordCount;  
    }  
  
    public void setRecordCount(int recordCount) {  
        this.recordCount = recordCount;  
    }  
  
    public int getStartRecord() {  
        return startRecord;  
    }  
  
    public PageInfo() {  
    }  
  
    /** 
     * 通过recordCount、pageSize、currentPage三个属性值来计算本对象中所有属性的值 
     *  
     * 
     */  
    public void compute() {  
        if (recordCount == 0 || pageSize == 0) {  
            pageCount = 0;  
            startRecord = 0;  
            endRecrod = 0;  
            currentPage = 0;  
        } else {  
            pageCount = (recordCount + pageSize - 1) / pageSize;  
            if (currentPage <= 0) {  
                currentPage = 1;  
            }  
            if (currentPage > pageCount) {  
                currentPage = pageCount;  
            }  
            startRecord = (currentPage - 1) * pageSize + 1;  
            int endRecrodTemp = startRecord + pageSize - 1;  
            if (endRecrodTemp <= recordCount) {  
                endRecrod = endRecrodTemp;  
            } else {  
                endRecrod = recordCount;  
            }  
        }  
    }  
  
}  

2、分页查询共通操作类 

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


import javax.servlet.http.HttpServletRequest;
  
  
/** 
 * 分页查询共通操作类 分页查询的思路是每页的数据分别进行查询,而不是将全部数据查询出来之后再分页 
 *  
 * @author ycglei886 
 * 创建时间:2010/5/20 
 * @version 1.0 
 */  

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值