分页类实例 java

保存代码片段

 

分页类:

分页类,点击查看
  1 package cn.news.vo;
  2 
  3 import java.util.List;
  4 /**
  5  * 用于在页面上使用的数据类,包含有分页的信息及相应的数据
  6  * @author Administrator
  7  * @param <T> 检索的数据实体类型
  8  */
  9 public class PageData<T> {
 10     private List<T> list ;
 11     private boolean isFirst=false;        //是否是首页
 12     private boolean isEnd=false;        //是否是尾页
 13     private int page=1;            //跳转页,默认为第一页
 14     private int count=10;        //每页的记录数,默认每页显示10条记录
 15     private int totalPage;        //总共的页码
 16     private int totalRows;        //总共的记录数
 17     private int realRowIndex;    //该分页在数据库中真实的记录行数
 18     
 19     /**
 20      * 在DaoImpl中取得查询实体的总记录后设置该属性
 21      * 跳转的页面、每页的记录、总记录,三个已知可以确定本类中的分页属性
 22      * @param totalRows
 23      */
 24     public void setTotalRows(int totalRows) {
 25         if (totalRows==0) {
 26             totalPage = 1 ;
 27         }else{
 28             this.totalPage = totalRows/count+1 ;        //可以得到全部的页面
 29         }
 30         this.init();                                    //设置分页的基本数据
 31         this.totalRows = totalRows;
 32     }
 33     
 34     public void init(){                                    //初始化分页的基本数据
 35         if(page < 1){
 36             page = 1 ;
 37         }
 38         if(page<totalPage){
 39             if(page==1){
 40                 isFirst = true ;
 41                 isEnd = false ;
 42             }
 43         }else if(page==totalPage){
 44             if (page==1) {
 45                 isFirst = true ;
 46                 isEnd = true ;
 47             }else{
 48                 isFirst = false ;
 49                 isEnd = true ;
 50             }
 51         }else if(page>totalPage){
 52             page = totalPage;
 53             if (totalPage==1) {
 54                 isFirst = true ;
 55                 isEnd = true ;
 56             }else {
 57                 isFirst = false ;
 58                 isEnd = true ;
 59             }    
 60         }
 61         realRowIndex = (page-1)*count ;
 62     }
 63     @Override
 64     public String toString() {
 65         return "PageData [isFirst=" + isFirst + ", isEnd=" + isEnd + ", page="
 66                 + page + ", count=" + count + ", totalPage=" + totalPage
 67                 + ", totalRows=" + totalRows + ", realRowIndex=" + realRowIndex
 68                 + "]";
 69     }
 70     public List<T> getList() {
 71         return list;
 72     }
 73     public void setList(List<T> list) {
 74         this.list = list;
 75     }
 76     public int getRealRowIndex() {
 77         return realRowIndex;
 78     }
 79     public int getPage() {
 80         return page;
 81     }
 82     public void setPage(int page) {
 83         this.page = page;
 84     }
 85     public int getCount() {
 86         return count;
 87     }
 88     public void setCount(int count) {
 89         this.count = count;
 90     }
 91     public int getTotalPage() {
 92         return totalPage;
 93     }
 94     public void setTotalPage(int totalPage) {
 95         this.totalPage = totalPage;
 96     }
 97     public boolean getIsFirst() {
 98         return isFirst;
 99     }
100     public void setIsFirst(boolean isFirst) {
101         this.isFirst = isFirst;
102     }
103     public boolean getIsEnd() {
104         return isEnd;
105     }
106     public void setIsEnd(boolean isEnd) {
107         this.isEnd = isEnd;
108     }
109     public int getTotalRows() {
110         return totalRows;
111     }
112 }

使用 Hibernate 的 DaoImpl 中的方法:

DaoImpl
 1 public PageData<V> findOnPage(PageData<V> page) {
 2         List<V> list = null ;
 3         String hql = "from "+ this.entityClazz.getName()+" order by id desc";
 4         try {
 5             page.setTotalRows(getTotalRows());
 6             list = this.getSession().createQuery(hql)
 7                                     .setFirstResult(page.getRealRowIndex())
 8                                     .setMaxResults(page.getCount())
 9                                     .list();
10             page.setList(list);
11         } catch (DataAccessResourceFailureException e) {
12             e.printStackTrace();
13         } catch (HibernateException e) {
14             e.printStackTrace();
15         } catch (IllegalStateException e) {
16             e.printStackTrace();
17         }
18         return page;
19     }

前台导航栏(Struts2 标签):

前台导航栏
 1 pageData为 action 中的分页类的对象
 2 
 3 <td>
 4           <s:if test="pageData.isFirst">
 5               &nbsp;首页&nbsp;|&nbsp;
 6               上一页&nbsp;|&nbsp;
 7           </s:if>
 8         <s:else>
 9             <a href="newsAction-findByPage?pageData.page=1">首页</a>&nbsp;|&nbsp;
10             <a href="newsAction-findByPage?pageData.page=${pageData.page-1}">上一页</a>&nbsp;|&nbsp;
11         </s:else>
12         <s:if test="pageData.isEnd">
13             下一页&nbsp;|&nbsp;
14             尾页&nbsp;|&nbsp;
15         </s:if>
16         <s:else>
17             <a href="newsAction-findByPage?pageData.page=${pageData.page+1}">下一页</a>&nbsp;|&nbsp;
18             <a href="newsAction-findByPage?pageData.page=${pageData.totalPage}">尾页</a>&nbsp;|&nbsp;
19         </s:else>
20             转到&nbsp;<input type="text" style="width: 30px">&nbsp;页
21             <input type="button" value="跳转" />,共&nbsp;${pageData.totalPage}&nbsp;页
22         </td>
posted @ 2012-08-01 21:36  书山瞌睡虫  阅读(368)  评论(0编辑  收藏  举报