现在的位置: 首页 > 综合 > 正文

分页实现

2013年09月20日 ⁄ 综合 ⁄ 共 2337字 ⁄ 字号 评论关闭

分页是最常见的了,只要是数据有点多,就可以使用分页技术。

网上例子很多,有的也很不错,但是到现在为止还没有找到一个即符合页面和代码分离

又封装的很好的通用的分页类。可能是自己没有找到吧。因此,自己在自己小组项目中

实现了一个分页的模式,贴上代码跟大家分享一下,只要按照它的几步实现就可以了。

主要思路:

1.

实现一个分页类,里面有每页显示几条数据,当前页数,最大页数,最大记录

数等属性,方法有设置并获得最大记录数,设置并获的最大页数,获取集合,是否是第一条,

是否是最后一条等。

2.

定义一个接口,其中有个方法,接口的功能是,实现分页的对象,必须实现这个接口,接口

有个好处:实现多态,让所实现的类自动调用他们自己的方法,以实现获取不同的集合。

3.

在对应的javaBean里面,定义一个方法,根据一个该javaBean对象,页数,每页记录数为参数,返回一个分页类对象。

 

具体看代码:

分页类:Pagination

Code

package util;

 

import impl.SQLCommandBean;

 

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.List;

import java.util.regex.Pattern;

 

public class Pagination {

    private int pageSize = 9;

    private int pageNumber = 1;

    private int maxPages;

    private int maxElements;

    private String sql;

    String tableName="";

    String pro="";

    String condition="";

    IPagination ipagination=null;

    private SQLCommandBean connDB=new SQLCommandBean();

   

    public Pagination(String sql) {

       this.sql = sql;

       init();

    }

 

    public Pagination(String sql, int pageSize, int pageNumber,IPagination ipagination) {

       this.sql = sql;

       this.pageSize = pageSize;

       this.pageNumber = pageNumber;

       this.ipagination=ipagination;

       init();

       this.setPageNumber(pageNumber);

    }

 

    private void init() {

       setMaxElements();

       setMaxPages();

    }

 

    private void setMaxElements() {

       int begin=sql.indexOf(" ");

       int end=sql.indexOf(",");

       pro=sql.substring(sql.indexOf(" "),sql.indexOf(","));

    tableName=sql.substring(sql.indexOf("from")+4,sql.indexOf("where"));

       condition=sql.substring(sql.indexOf(("where"))+5);

       this.maxElements=connDB.getSum("select count(*) as total from "+tableName+" where "+condition);

    }

 

    private void setMaxPages() {

       if (maxElements != 0 && (maxElements % pageSize == 0)) {

           maxPages = maxElements / pageSize;

       } else {

           maxPages = maxElements / pageSize + 1;

       }

    }

 

    private String sqlModify(int begin,int end){

       StringBuffer target = new StringBuffer(200);

       target.append("select top ");

       target.append(pageSize);

       target.append(" * from "+tableName+" where "+pro+"  not in(select top ");

       target.append(begin);

       target.append(" "+pro+" from "+tableName+")");

       target.append("  and "+condition);

       return target.toString();

    }

 

    private int getEndElement() {

       int endElement = pageNumber * pageSize;

       if (endElement >= maxElements) {

           return maxElements;

       } else {

           return endElement;

       }

    }

 

   

抱歉!评论已关闭.