`
canofy
  • 浏览: 830183 次
  • 性别: Icon_minigender_1
  • 来自: 北京、四川
社区版块
存档分类
最新评论

分页的类

    博客分类:
  • j2EE
阅读更多
pageBean:
package cn.advertiser.model;

/**
 * Jun 28, 2008 分页使用
 */

public class Pagination {
	private int start; // 当前页是从哪条记录开始的
	private int end; // 当前页是从哪条记录结束的
	private int currentPage;// 当前页
	private int pageSize;// 每页显示多少条数据
	private int totalSize;// 总的记录数
	private int totalPage; // 共有多少页

	public int getStart() {
		return start;
	}

	public void setStart(int start) {
		this.start = start;
	}

	public int getEnd() {
		return end;
	}

	public void setEnd(int end) {
		this.end = end;
	}

	public int getCurrentPage() {
		return currentPage;
	}

	public void setCurrentPage(int currentPage) {
		this.currentPage = currentPage;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getTotalSize() {
		return totalSize;
	}

	public void setTotalSize(int totalSize) {
		this.totalSize = totalSize;
	}

	public int getTotalPage() {
		return totalPage;
	}

	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}

}

数据库连接:
package cn.advertiser.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.apache.log4j.Logger;

/**
 * Jun 28, 2008 
 */

public class ConnDB {
	
	private Logger logger=Logger.getLogger(ConnDB.class);
	private Connection conn=null;
	private Statement stmt=null;
	private ResultSet rs=null;
	
	/**
	 * 获取数据库连接
	 * @return
	 */
	public Connection getConn(){
		try {
			Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
			conn=DriverManager.getConnection("proxool.link");
		} catch (ClassNotFoundException e) {
			logger.error("getConn()", e);
		} catch (SQLException e) {
			logger.error("getConn()获取数据库连接池时出错!", e);
		}
		return conn;
	}
	
	/**
	 * 执行查询语句sql
	 * @param sql
	 * @return
	 */
	public ResultSet getResultSet(String sql){
		try {
			if(conn==null||conn.isClosed()) conn=this.getConn();
			stmt=conn.createStatement();
			rs=stmt.executeQuery(sql);
		} catch (SQLException e) {
			logger.error("执行查询语句"+sql+"出错:",e);
		}
		return rs;
	}
	
	/**
	 * 更新sql语句
	 * @param sql
	 * @return  整数,更新的条数
	 */
	public int excuteUpdate(String sql){
		int result=0;
		try {
			if(conn==null||conn.isClosed()) conn=this.getConn();
			result=conn.createStatement().executeUpdate(sql);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return result;
	}
	
	/**
	 * 关闭连接
	 */
	public void closeConn(){
		try{
			if(rs!=null){
				rs.close();
				rs=null;
			}
			if(stmt!=null){
				stmt.close();
				stmt=null;
			}
			if(conn!=null){
				conn.close();
				conn=null;
			}
		}catch (SQLException e) {
			logger.error("关闭数据库连接出错", e);
		}
		
	}
}

分页:
package cn.advertiser.util;

import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.log4j.Logger;

import cn.advertiser.dao.ConnDB;
import cn.advertiser.model.Pagination;

/** 
 * Jun 28, 2008 
 */

public class PageUtil {
	
	private static Logger logger=Logger.getLogger(PageUtil.class);
	
	/**
	 * 获取分页的所有信息
	 * @param countSql
	 * @param pagination 只含有currentPage和pageSize
	 * @return 返回的pagination含有start、end、pageSize、totalSize、totalPage、currentPage
	 */
	public static Pagination getPage(String countSql,Pagination pagination){		
		//SELECT * --分页 sqlserver2005特有,与oracle类似
		//FROM (select *,ROW_NUMBER() Over(order by id) as rowNum from t_basicAdData ) as myTable
		//where rowNum between 10000 and 10200
		
		int totalSize=getTotalSize(countSql); //总的记录条数
		int start = 0;   //当前页是从哪条记录开始的
		int end = 0;     //当前页是从哪条记录结束的
		int totalPage = 0;//总的页数
		int currentPage=pagination.getCurrentPage(); //当前页
		int pageSize=pagination.getPageSize(); //每页的条数		
		
		totalPage=(int)Math.ceil((double)totalSize/pageSize);
		//如果当前小于1,则显示第一页
		if(currentPage<1)         currentPage=1;	
		//如果当前页大于总页数,则显示最后一页
		if(currentPage>totalPage) currentPage=totalPage;
		if(end>totalSize) end = totalSize;		
		//得到开始和结束记录号		

		start = pageSize*(currentPage-1)+1;  //sqlserver2005中是从第一条数据开始
	 	end = start + pageSize; 
	 	//设置返回的bean
	 	pagination.setEnd(end);
	 	pagination.setStart(start);
	 	pagination.setTotalPage(totalPage);
	 	pagination.setTotalSize(totalSize);
		return pagination;
	}
	
	/**
	 * 获取总的记录条数
	 * @param countSql  sql语句
	 * @return
	 */
	public static int getTotalSize(String countSql){
		int totalSize=0;
		ConnDB connDB=new ConnDB();
		ResultSet rs=connDB.getResultSet(countSql);
		try {
			if(rs!=null&&rs.next()){
				totalSize=rs.getInt(1);
			}
		} catch (SQLException e) {
			logger.error("getTotalSize()",e);
		}
		return totalSize;
	}
}

分享到:
评论

相关推荐

    php封装的page分页类.zip

    这个"Page"分页类的实现可能包括以下几个核心组件: 1. **初始化**:类的构造函数接收必要的参数,如总记录数、每页显示的条目数、当前页数等,用于计算总的页数和其他相关属性。 2. **计算总页数**:根据总记录数...

    一个很好的分页类php分页类

    2. **实例化分页类**:将查询结果总数和每页记录数传递给分页类。 3. **设置当前页**:根据URL或请求参数设定当前页码。 4. **获取分页数据**:调用分页类的方法获取当前页的数据。 5. **渲染页面**:根据获取的...

    asp分页类,套用方便,收藏

    "asp分页类"就是用来实现这种功能的代码库或组件。 分页类通常包含以下几个核心知识点: 1. **参数处理**:分页类需要接收一些参数,如当前页码、每页显示条目数、总记录数等。这些参数的正确处理是分页功能的基础...

    java分页大全 包括最强大的java分页类

    强大的分页类通常会考虑更多的实际需求,比如排序、过滤条件、统计信息等,并且可能具有高度可配置性,以适应不同的项目需求。 最后,"分页.rar"可能包含的是一个独立的分页解决方案,可能具有特定的优化或特性。...

    asp.net 分页类

    ASP.NET 分页类是用于处理大量数据并分批次显示的关键技术,它允许用户在Web应用程序中轻松地浏览大型数据集,提高用户体验,并减轻服务器负担。相比于Visual Studio (VS) 自带的分页控件,自定义分页类提供了更高的...

    分页 jsp 分页类 java

    首先,我们需要创建一个分页类,这个类将包含关于分页的基本信息,如当前页、总页数、每页显示的记录数以及总记录数等。以下是一个简单的分页类的示例: ```java public class Pagination { private int current...

    常用类 数据库连接类 分页类

    一个分页类通常包含获取总记录数、设置每页显示条数、计算总页数、生成分页链接等功能。例如,可以设计一个简单的分页类: ```php class Pagination { private $total_rows; private $per_page; private $...

    高效asp分页类,带例子

    "高效asp分页类"就是针对这种情况设计的,旨在处理大数据集时保持快速响应,避免页面加载过慢或服务器压力过大。 高效asp分页类的核心在于优化了数据检索和页面渲染的过程,通常包括以下几个关键点: 1. **数据...

    PHP超强分页类

    ### PHP超强分页类知识点详解 #### 一、概述 “PHP超强分页类”是一款专为PHP开发人员设计的强大工具,旨在简化分页逻辑,提高网页应用的用户体验。该类支持多种显示模式,能够适应不同的场景需求,并且兼容PHP4和...

    php分页类(通用)

    - **属性**:分页类通常会包含一些属性,如当前页码(currentPage)、每页显示条数(perPage)、总记录数(totalRows)以及总页数(totalPages)等。 - **方法**:分页类的方法包括设置和获取属性值,计算总页数,...

    简单PHP分页类的实现(内含测试数据库及数据库操作类)

    下面将详细介绍分页类的工作原理、如何使用以及相关数据库操作。 首先,PHP分页类的核心功能是计算总页数、生成链接和获取每页的数据。它通常包括以下主要部分: 1. 计算总页数:根据查询语句获取所有记录的数量,...

    PHP万能分页类,多种样式

    `说明.txt`是关键的文档,它应该包含了详细的使用指南,包括如何引入分页类、如何配置参数、如何调整样式以及可能出现的问题和解决方案。开发者应仔细阅读这份文档,以便正确地集成和使用这个分页类。 总的来说,这...

    asp分页类,很详细,很快

    这篇压缩包文件"aspfenyelei_asp"很可能包含了一个详细的ASP分页类,这种类通常包含了一系列方法和属性,用于实现高效的分页功能。下面我们将深入探讨ASP分页的相关知识点。 1. **基础概念**:在ASP中,分页涉及到...

    asp静态生成 分页类

    在ASP(Active Server Pages)开发中,静态生成分页类是一种常见的优化技术,它能够提高网站性能,降低服务器负载,并且对于搜索引擎优化(SEO)也十分有利。ASP静态生成分页类主要是为了处理大量数据的展示,将动态...

    万能的php分页类实例代码

    以上代码示例中,`Pagination`就是我们的分页类,它封装了分页逻辑,使得在实际项目中应用分页变得简单易行。通过深入理解并定制此类,我们可以应对各种复杂的分页需求,如自定义URL结构、添加翻页动画、支持无限...

    叶子asp分页类(好用)

    名称: 叶子asp分页类 Name: ShowoPage(vbs class) RCSfile: ReadMe.txt Revision: 0.12.20051114.f Author: Yehe(叶子) Released: 2005-11-14 09:40:13 Descript: ASP分页类,支持access/mssql/mysql/sqlite ...

    php分页类,功能很强大,直接调用类中的函数就可以

    2. **实例化分页类**:创建一个分页类的对象,传入必要的参数,如总记录数、每页显示的条目数等。 ```php $total_records = count($all_data); // 假设$all_data是所有数据 $per_page = 20; // 每页显示20条数据 $...

    叶子asp分页类0.12

    名称: 叶子asp分页类 Name: ShowoPage(vbs class) RCSfile: ReadMe.txt Revision: 0.12.20051114.f Author: Yehe(叶子) Released: 2005-11-14 09:40:13 Descript: ASP分页类,支持access/mssql/mysql/sqlite ...

    基于Servlet的抽象分页类

    "基于Servlet的抽象分页类"通常是指一个设计用于协助在Web应用中实现数据分页功能的类。分页是大型数据集展示时必要的功能,它帮助用户更有效地浏览和管理大量的信息,而无需一次性加载所有数据,提高了用户体验和...

    asp.net 通用分页类

    `asp.net 通用分页类`就是为了解决这个问题而设计的,它允许开发者创建一个可复用的组件,以便在不同的数据展示页面上实现高效且灵活的分页功能。 首先,我们来看`C#`语言是如何实现分页逻辑的。在C#中,可以创建一...

Global site tag (gtag.js) - Google Analytics