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 分页工具类,以及返回集合数据的封装, private int limit = 10;//每页的个数 /** * 当前页 */ private int page; // /** * 总行数 */ private int totalRows; // /** * 总页数 */ private ...
下面是一个简单的Java分页工具类实现示例: ```java public class PageUtil { public static <T> PageResult<T> paginate(int pageNumber, int pageSize, DataSource dataSource, String sql, Object... params) ...
对于给定的"bk_page"文件,这可能是一个包含分页工具类或者示例代码的压缩包,可以用于直接导入项目并使用。具体实现细节需要查看源代码以了解更多信息,如分页查询是否考虑了性能优化(如预编译SQL,使用存储过程等...
本篇文章将重点讨论如何使用Java JDBC和Oracle数据库实现面向对象的分页查询。 首先,我们需要了解面向对象编程的基本概念。面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,强调用对象来表示...
标题中的“Pager(通过的分页工具类)”显然指的是一个用于实现分页功能的Java类。在这个类中,开发者通常会封装分页操作的相关逻辑,以便在各种场景下复用。现在我们来详细探讨一下分页的基本概念、设计原则以及...
"page.rar"可能包含了一个分页工具类,这类工具通常提供静态方法,接收SQL查询语句、每页大小和当前页码作为参数,然后返回处理后的SQL和分页参数。这样的设计使得在代码中调用分页功能变得简单易行,同时也易于维护...
这里提到的"分页工具类"是一个专门为实现数据库查询分页功能而设计的自定义组件。下面我们将详细探讨这个分页工具类的可能实现和其关键组成部分。 首先,`PageManager.java`可能是整个分页操作的核心类,它通常会...
1. **JDBC工具类**:JDBC工具类通常封装了数据库连接、预编译SQL语句、执行SQL、关闭资源等常见操作,以减少重复代码,提升开发效率。`connJdbcUtil`可能是一个实现了这些功能的Java类。 2. **数据库连接配置**:...
原创强大的jdbc数据库操作工具类: 1.获取数据源 2.设置数据源 3.获取数据库连接 4.执行insert/delete语句,一个参数列表 public static boolean excute(String sql, List args) 5.执行insert/delete语句,多个参数...
基于JDBC(Java Database Connectivity)的轻量级分页工具集可以帮助开发者更高效地处理大量数据,实现数据库查询的分页显示。本教程主要探讨如何使用Java和JDBC来构建这样的工具集。 首先,我们需要理解JDBC的基础...
在实际项目中,我们通常会封装一个分页工具类,以简化分页查询的代码。例如,可以定义一个方法,接收当前页数和每页大小作为参数,然后返回相应的SQL语句。 总的来说,Java和MySQL的分页技术并不复杂,但需要合理...
在Java中,可以通过继承`Thread`类或者实现`Runnable`接口来创建线程。 ##### 3. 多线程分页查询方案设计 针对数据量较大的场景,本文介绍的多线程分页查询方案主要包含以下几个步骤: - **步骤1:计算总记录数**...
本话题主要探讨如何使用自定义的Java分页标签来实现带条件的分页查询,这将帮助开发者更好地控制和优化数据检索。 首先,我们需要了解分页的基本原理。分页查询是通过限制数据库查询返回的结果数量,每次只获取一...
为了更好地组织和管理分页逻辑,我们通常会创建一个专门的分页工具类或者使用现有的库,如MyBatis或Spring Data JPA。这些框架提供了更高级的API,可以简化分页的处理,比如在MyBatis中,我们可以这样做: ```java ...
在给定的"SuperHibernateEntityDao.java"文件中,可能包含了一个自定义的DAO基类,该类扩展了Hibernate的通用DAO操作,并可能实现了JDBC SQL分页的方法。这样的类通常会有一个用于执行分页查询的方法,比如`...
考虑到标签中提到的"源码"和"工具",博主可能分享了一段Java代码(PageHandle.java)作为示例,展示如何编写一个处理分页逻辑的类或方法。 首先,我们来看看逻辑分页的基本流程。当用户请求某一页时,应用程序会计...
1. JDBC基础:Java标准API中的JDBC(Java Database Connectivity)提供了与数据库交互的接口和类。通过`Statement`或`PreparedStatement`对象执行SQL语句,并使用`ResultSet`对象获取结果。 2. 分页查询SQL构造:...
本文将探讨如何在SSM架构下,利用Java实现基于SQL的Elasticsearch分页查询,从而实现“开箱即用”的功能。 首先,我们需要理解Elasticsearch的基本概念。Elasticsearch是一个分布式、RESTful风格的搜索和分析引擎,...
这个封装工具类的出现是为了提供一种更简洁、易于使用的接口来执行SQL操作,减轻开发者处理数据库连接、事务管理以及异常处理的负担。下面我们将深入探讨SpringJdbcTemplate的相关知识点。 1. **SpringJdbcTemplate...
本篇将详细介绍如何在Java中实现面向对象的分页功能。 首先,我们需要理解分页的基本要素。分页主要包括当前页数、每页显示的记录数(页大小)、总记录数以及总页数。在面向对象的设计中,我们可以创建一个`Page`类...