`
liang2431
  • 浏览: 7538 次
社区版块
存档分类
最新评论

java实现分页工具类(JDBC)

    博客分类:
  • j2se
阅读更多
1.分页工具类,封装分页信息
package com.student.util;
import java.util.List;

import com.student.entity.Person;

/**
 * 封装分页信息
 * @author Administrator
 *
 * @param <Person>
 */
public class PageModel<E> {

	//结果集
	private List<E> list;
	
	//查询记录数
	private int totalRecords;
	
	//第几页
	private int pageNo;
	
	//每页多少条记录
	private int pageSize;
	
	//总页数
	public int getTotalPages(){
		return (totalRecords + pageSize -1)/pageSize;
	}
	
	//首页
	public int getTopPage(){
		return 1;
	}
	
	//上一页
	public int getPreviousPage(){
		if(pageNo<=1){
			return 1;
		}
		return pageNo-1;
	}
	//下一页
	public int getNextPage(){
		if(pageNo>=getBottomPage()){
			return getBottomPage();
		}
		return pageNo+1;
	}
	
	//尾页
	public int getBottomPage(){
		return getTotalPages();
	}
	
	public List<E> getList() {
		return list;
	}
	public void setList(List<E> list) {
		this.list = list;
	}
	public int getTotalRecords() {
		return totalRecords;
	}
	public void setTotalRecords(int totalRecords) {
		this.totalRecords = totalRecords;
	}
	public int getPageNo() {
		return pageNo;
	}
	public void setPageNo(int pageNo) {
		this.pageNo = pageNo;
	}
	public int getPageSize() {
		return pageSize;
	}
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
}
 
2.测试类
public class PageModelTest{
	public static void main(String[] args){
		int pageNo=1;
		int pageSize=10;
		findUserList(pageNo,pageSize);
	}
	/**
	 * 分页查询
	 * @param pageNo 第几页
	 * @param pageSize 每页多少条记录
	 * @return PageModel<E>
	 */
	public PageModel<Person> findUserList(int pageNo,int pageSize){
		PageModel<Person> pageModel = null;
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		//各数据库的分页语句不一样
		
		//oracle实现分页,三层嵌套,这里10应该为pageNo*pageSize ,0为(pageNo-1)*pageSize
		//String sql="
		//select column1,column2,column3,column4,column5 from	
		//	(select rownum rn,column1,column2,column3,column4,column5 from
		//		(select column1,column2,column3,column4,column5 from table_name order by column desc)
		//	where rownum<=10)
		//where rn>0";
		
		//mysql实现分页
		String sql="select * from person order by id desc limit ?,? "; 
		conn=DBUtil.getUtil().getConnection();
		try {
			ps=conn.prepareStatement(sql);
			ps.setInt(1, (pageNo-1) * pageSize);
			ps.setInt(2, pageSize);
			rs=ps.executeQuery();
			List<Person> personList  = new ArrayList<Person>();
			while(rs.next()){
				Person person=new Person();
				person.setName(rs.getString("stu_name"));
				person.setPassword(rs.getString("stu_psw"));
				person.setNumber(rs.getString("stu_number"));
				person.setBirthday(rs.getDate("stu_birth"));
				person.setSex(rs.getInt("stu_sex"));
				person.setPolity(rs.getInt("stu_polity"));
				person.setBrief(rs.getString("stu_brief"));
				person.setType(rs.getInt("type"));
				person.setState(rs.getInt("state"));
				personList.add(person);
			}
			pageModel = new PageModel<Person>();
			pageModel.setList(personList);
			pageModel.setTotalRecords(getTotalRecords(conn));
			pageModel.setPageSize(pageSize);
			pageModel.setPageNo(pageNo);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				if(rs!=null){
					rs.close();
				}
				if(ps!=null){
					ps.close();
				}
				if(conn!=null){
					conn.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return pageModel;
	}
	/**
	 * 得到总记录数,私有方法,外部无法访问,本类中使用
	 * @param conn
	 * @return
	 */
	private int getTotalRecords(Connection conn){
		PreparedStatement ps = null;
		ResultSet rs = null;

		String sql="select count(*) from person"; 
		
		conn=DBUtil.getUtil().getConnection();
		int count=0;
		try {
			
			ps=conn.prepareStatement(sql);
			rs=ps.executeQuery();
			while(rs.next()){
				//此时根据sql语句查出的只有一列,否则不建议用int标识字段
				count = rs.getInt(1);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				if(rs!=null){
					rs.close();
				}
				if(ps!=null){
					ps.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return count;
	}
	
}
分享到:
评论

相关推荐

    Java jdbc分页工具类

    java jdbc 分页工具类,以及返回集合数据的封装, private int limit = 10;//每页的个数 /** * 当前页 */ private int page; // /** * 总行数 */ private int totalRows; // /** * 总页数 */ private ...

    Java实现的分页工具类

    下面是一个简单的Java分页工具类实现示例: ```java public class PageUtil { public static &lt;T&gt; PageResult&lt;T&gt; paginate(int pageNumber, int pageSize, DataSource dataSource, String sql, Object... params) ...

    java jdbc 分页

    对于给定的"bk_page"文件,这可能是一个包含分页工具类或者示例代码的压缩包,可以用于直接导入项目并使用。具体实现细节需要查看源代码以了解更多信息,如分页查询是否考虑了性能优化(如预编译SQL,使用存储过程等...

    JAVA_JDBC面向对象分页(初步设计二之oracle)

    本篇文章将重点讨论如何使用Java JDBC和Oracle数据库实现面向对象的分页查询。 首先,我们需要了解面向对象编程的基本概念。面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,强调用对象来表示...

    Pager(通过的分页工具类)

    标题中的“Pager(通过的分页工具类)”显然指的是一个用于实现分页功能的Java类。在这个类中,开发者通常会封装分页操作的相关逻辑,以便在各种场景下复用。现在我们来详细探讨一下分页的基本概念、设计原则以及...

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

    "page.rar"可能包含了一个分页工具类,这类工具通常提供静态方法,接收SQL查询语句、每页大小和当前页码作为参数,然后返回处理后的SQL和分页参数。这样的设计使得在代码中调用分页功能变得简单易行,同时也易于维护...

    分页工具类

    这里提到的"分页工具类"是一个专门为实现数据库查询分页功能而设计的自定义组件。下面我们将详细探讨这个分页工具类的可能实现和其关键组成部分。 首先,`PageManager.java`可能是整个分页操作的核心类,它通常会...

    jdbc经典工具类

    1. **JDBC工具类**:JDBC工具类通常封装了数据库连接、预编译SQL语句、执行SQL、关闭资源等常见操作,以减少重复代码,提升开发效率。`connJdbcUtil`可能是一个实现了这些功能的Java类。 2. **数据库连接配置**:...

    原创强大的jdbc数据库操作工具类

    原创强大的jdbc数据库操作工具类: 1.获取数据源 2.设置数据源 3.获取数据库连接 4.执行insert/delete语句,一个参数列表 public static boolean excute(String sql, List args) 5.执行insert/delete语句,多个参数...

    六、Java持久化基础-基于JDBC轻量级分页工具集

    基于JDBC(Java Database Connectivity)的轻量级分页工具集可以帮助开发者更高效地处理大量数据,实现数据库查询的分页显示。本教程主要探讨如何使用Java和JDBC来构建这样的工具集。 首先,我们需要理解JDBC的基础...

    java简单分页技术mysql 内涵.sql文件,直接实现

    在实际项目中,我们通常会封装一个分页工具类,以简化分页查询的代码。例如,可以定义一个方法,接收当前页数和每页大小作为参数,然后返回相应的SQL语句。 总的来说,Java和MySQL的分页技术并不复杂,但需要合理...

    java多线程分页查询

    在Java中,可以通过继承`Thread`类或者实现`Runnable`接口来创建线程。 ##### 3. 多线程分页查询方案设计 针对数据量较大的场景,本文介绍的多线程分页查询方案主要包含以下几个步骤: - **步骤1:计算总记录数**...

    java自定义分页标签实现带条件的分页查询

    本话题主要探讨如何使用自定义的Java分页标签来实现带条件的分页查询,这将帮助开发者更好地控制和优化数据检索。 首先,我们需要了解分页的基本原理。分页查询是通过限制数据库查询返回的结果数量,每次只获取一...

    java的分页代码

    为了更好地组织和管理分页逻辑,我们通常会创建一个专门的分页工具类或者使用现有的库,如MyBatis或Spring Data JPA。这些框架提供了更高级的API,可以简化分页的处理,比如在MyBatis中,我们可以这样做: ```java ...

    关于Hibernate分页类和jdbc的sql分页完美融合

    在给定的"SuperHibernateEntityDao.java"文件中,可能包含了一个自定义的DAO基类,该类扩展了Hibernate的通用DAO操作,并可能实现了JDBC SQL分页的方法。这样的类通常会有一个用于执行分页查询的方法,比如`...

    java逻辑分页

    考虑到标签中提到的"源码"和"工具",博主可能分享了一段Java代码(PageHandle.java)作为示例,展示如何编写一个处理分页逻辑的类或方法。 首先,我们来看看逻辑分页的基本流程。当用户请求某一页时,应用程序会计...

    java语言的分页查询功能(mysql和sql server)

    1. JDBC基础:Java标准API中的JDBC(Java Database Connectivity)提供了与数据库交互的接口和类。通过`Statement`或`PreparedStatement`对象执行SQL语句,并使用`ResultSet`对象获取结果。 2. 分页查询SQL构造:...

    java实现es sql分页,采用SSM架构实现,开箱即用

    本文将探讨如何在SSM架构下,利用Java实现基于SQL的Elasticsearch分页查询,从而实现“开箱即用”的功能。 首先,我们需要理解Elasticsearch的基本概念。Elasticsearch是一个分布式、RESTful风格的搜索和分析引擎,...

    SpringJdbcTemplate封装工具类

    这个封装工具类的出现是为了提供一种更简洁、易于使用的接口来执行SQL操作,减轻开发者处理数据库连接、事务管理以及异常处理的负担。下面我们将深入探讨SpringJdbcTemplate的相关知识点。 1. **SpringJdbcTemplate...

    java分页实现(面向对象)

    本篇将详细介绍如何在Java中实现面向对象的分页功能。 首先,我们需要理解分页的基本要素。分页主要包括当前页数、每页显示的记录数(页大小)、总记录数以及总页数。在面向对象的设计中,我们可以创建一个`Page`类...

Global site tag (gtag.js) - Google Analytics