java实现分页工具类(JDBC)

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;
	}
	
}

猜你喜欢

转载自liang2431.iteye.com/blog/1654631