• 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 block
    109                 e.printStackTrace();
    110             }
    111         }
    112         return count;
    113     }
    114 }
  • 相关阅读:
    如何分析matlab程序的主要效率问题
    matlab的二维卷积操作
    移动,联通,电信手机都属于什么频段?
    开始学习Python
    利用R进行多元线性回归分析
    PANGU---Planet and Asteroid Natural scene Generation Utility
    中兴N909手机关闭照相机声音
    0709 C语言常见误区----------函数指针问题
    0709 C语言常见误区----------二维数组做参数
    0707 父子进程之间传递文件描述符
  • 原文地址:https://www.cnblogs.com/slliang/p/2651053.html
Copyright © 2020-2023  润新知