2012年8月22日星期三

java实现分页工具类(JDBC)

java实现分页工具类(JDBC)

分页的实现在日常的开发中会经常遇到,编写一个分页工具类,以后可以直接引用了,呵呵。。。

1.分页工具类,封装分页信息

 1 package com.student.util; 2 import java.util.List; 3  4 import com.student.entity.Person; 5  6 /** 7  * 封装分页信息 8  * @author Administrator 9  *10  * @param <Person>11  */12 public class PageModel<E> {13 14     //结果集15     private List<E> list;16     17     //查询记录数18     private int totalRecords;19     20     //第几页21     private int pageNo;22     23     //每页多少条记录24     private int pageSize;25     26     //总页数27     public int getTotalPages(){28         return (totalRecords + pageSize -1)/pageSize;29     }30     31     //首页32     public int getTopPage(){33         return 1;34     }35     36     //上一页37     public int getPreviousPage(){38         if(pageNo<=1){39             return 1;40         }41         return pageNo-1;42     }43     //下一页44     public int getNextPage(){45         if(pageNo>=getBottomPage()){46             return getBottomPage();47         }48         return pageNo+1;49     }50     51     //尾页52     public int getBottomPage(){53         return getTotalPages();54     }55     56     public List<E> getList() {57         return list;58     }59     public void setList(List<E> list) {60         this.list = list;61     }62     public int getTotalRecords() {63         return totalRecords;64     }65     public void setTotalRecords(int totalRecords) {66         this.totalRecords = totalRecords;67     }68     public int getPageNo() {69         return pageNo;70     }71     public void setPageNo(int pageNo) {72         this.pageNo = pageNo;73     }74     public int getPageSize() {75         return pageSize;76     }77     public void setPageSize(int pageSize) {78         this.pageSize = pageSize;79     }80 81 }

2.测试类

  1 public class PageModelTest{  2     public static void main(String[] args){  3         int pageNo=1;  4         int pageSize=10;  5         findUserList(pageNo,pageSize);  6     }  7     /**  8      * 分页查询  9      * @param pageNo 第几页 10      * @param pageSize 每页多少条记录 11      * @return PageModel<E> 12      */ 13     public PageModel<Person> findUserList(int pageNo,int pageSize){ 14         PageModel<Person> pageModel = null; 15         Connection conn = null; 16         PreparedStatement ps = null; 17         ResultSet rs = null; 18         //各数据库的分页语句不一样 19          20         /*oracle实现分页,三层嵌套,这里10应该为pageNo*pageSize ,0为(pageNo-1)*pageSize 21         String sql=" 22         select column1,column2,column3,column4,column5 from     23              (select rownum rn,column1,column2,column3,column4,column5 from 24                  (select column1,column2,column3,column4,column5 from table_name order by column desc) 25              where rownum<=10) 26          where rn>0"; 27         */ 28         //mysql实现分页 29         String sql="select * from person order by id desc limit ?,? ";  30         conn=DBUtil.getUtil().getConnection(); 31         try { 32             ps=conn.prepareStatement(sql); 33             ps.setInt(1, (pageNo-1) * pageSize); 34             ps.setInt(2, pageSize); 35             rs=ps.executeQuery(); 36             List<Person> personList  = new ArrayList<Person>(); 37             while(rs.next()){ 38                 Person person=new Person(); 39                 person.setName(rs.getString("stu_name")); 40                 person.setPassword(rs.getString("stu_psw")); 41                 person.setNumber(rs.getString("stu_number")); 42                 person.setBirthday(rs.getDate("stu_birth")); 43                 person.setSex(rs.getInt("stu_sex")); 44                 person.setPolity(rs.getInt("stu_polity")); 45                 person.setBrief(rs.getString("stu_brief")); 46                 person.setType(rs.getInt("type")); 47                 person.setState(rs.getInt("state")); 48                 personList.add(person); 49             } 50             pageModel = new PageModel<Person>(); 51             pageModel.setList(personList); 52             pageModel.setTotalRecords(getTotalRecords(conn)); 53             pageModel.setPageSize(pageSize); 54             pageModel.setPageNo(pageNo); 55         } catch (SQLException e) { 56             // TODO Auto-generated catch block 57             e.printStackTrace(); 58         }finally{ 59             try { 60                 if(rs!=null){ 61                     rs.close(); 62                 } 63                 if(ps!=null){ 64                     ps.close(); 65                 } 66                 if(conn!=null){ 67                     conn.close(); 68                 } 69             } catch (SQLException e) { 70                 // TODO Auto-generated catch block 71                 e.printStackTrace(); 72             } 73         } 74         return pageModel; 75     } 76     /** 77      * 得到总记录数,私有方法,外部无法访问,本类中使用 78      * @param conn 79      * @return 80      */ 81     private int getTotalRecords(Connection conn){ 82         PreparedStatement ps = null; 83         ResultSet rs = null; 84  85         String sql="select count(*) from person";  86          87         conn=DBUtil.getUtil().getConnection(); 88         int count=0; 89         try { 90              91             ps=conn.prepareStatement(sql); 92             rs=ps.executeQuery(); 93             while(rs.next()){ 94                 //此时根据sql语句查出的只有一列,否则不建议用int标识字段 95                 count = rs.getInt(1); 96             } 97         } catch (SQLException e) { 98             e.printStackTrace(); 99         }finally{100             try {101                 if(rs!=null){102                     rs.close();103                 }104                 if(ps!=null){105                     ps.close();106                 }107             } catch (SQLException e) {108                 // TODO Auto-generated catch block109                 e.printStackTrace();110             }111         }112         return count;113     }114 }

TAG: