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