当前位置:首页 > 青鸟知识 > java

完成数据库和界面的分页

来源:湖南it教育学校 发布日期:2016-05-21
摘要:分页应当是在我们开拓web应用经常常要做的任务,能够或许比力精练的完成数据库和视图层的分页特别主要。在数据库层支配Hibernate中止数据库的分页

   分页应当是在我们开拓web应用经常常要做的任务,能够或许比力精练的完成数据库和视图层的分页特别主要。

   在数据库层支配Hibernate中止数据库的分页,将从数据库中查询出的数据封装为javabean;在视图层便能够便利的完成分页。

树立PageBean

package com.fishing.common.bean;  

import java.util.List;  

@SuppressWarnings( unchecked )  

public class PageBean {  

     

   private List list; // 要前往的某一页的记实列表

   private int allRow; // 总记实数

   private int totalPage; // 总页数

   private int currentPage; // 以后页

   private int pageSize; // 每页记实数

     

   private boolean isFirstPage; // 是不是为第一页

   private boolean isLastPage; // 是不是为最初一页

   private boolean hasPreviousPage; // 是不是有前一页

   private boolean hasNextPage; // 是不是有下一页

   public List getList() {  

       return list;  

   }  

   public void setList(List list) {  

       this.list = list;  

   }  

   public int getAllRow() {  

       return allRow;  

   }  

   public void setAllRow(int allRow) {  

       this.allRow = allRow;  

   }  

   public int getTotalPage() {  

       return totalPage;  

   }  

   public void setTotalPage(int totalPage) {  

       this.totalPage = totalPage;  

   }  

   public int getCurrentPage() {  

       return currentPage;  

   }  

   public void setCurrentPage(int currentPage) {  

       this.currentPage = currentPage;  

   }  

   public int getPageSize() {  

       return pageSize;  

   }  

   public void setPageSize(int pageSize) {  

       this.pageSize = pageSize;  

   }  

   /** */

   /**

    * 初始化分页信息

    */

   public void init() {  

       this.isFirstPage = isFirstPage();  

       this.isLastPage = isLastPage();  

       this.hasPreviousPage = isHasPreviousPage();  

       this.hasNextPage = isHasNextPage();  

   }  

   /** */

   /**

    * 以下断定页的信息,只需getter方式(is方式)便可

    *  

    * @return

    */

   public boolean isFirstPage() {      

       return (currentPage == 1);// 如是以后页是第1页    

   }    

   public boolean isLastPage() {      

return currentPage == totalPage; //若是以后页是最初一页    

}    

   public boolean isHasPreviousPage() {      

return currentPage != 1; //只需以后页不是第1页    

}    

   public boolean isHasNextPage() {      

return currentPage != totalPage; //只需以后页不是最初1页    

}    

   /** */

   /**

    * 计较总页数,静态方式,供内部直接经由过程类名挪用

    *  

    * @param pageSize

    *            每页记实数

    * @param allRow

    *            总记实数

    * @return 总页数

    */

   public static int countTotalPage(final int pageSize, final int allRow) {  

       int totalPage = allRow % pageSize == 0 ? allRow / pageSize : allRow  

               / pageSize + 1;  

       return totalPage;  

   }  

   /** */

   /**

    * 计较以后页起头记实

    *  

    * @param pageSize

    *            每页记实数

    * @param currentPage

    *            以后第几页

    * @return 以后页起头记实号

    */

   public static int countOffset(final int pageSize, final int currentPage) {  

       final int offset = pageSize * (currentPage - 1);  

       return offset;  

   }  

   /** */

   /**

    * 计较以后页,若为0或请求的URL中没有 ?page= ,则用1取代

    *  

    * @param page

    *            传进的参数(可以为空,即0,则前往1)

    * @return 以后页

    */

   public static int countCurrentPage(int page) {  

       final int curPage = (page == 0 ? 1 : page);  

       return curPage;  

   }  

}  

在Dao的笼统接口BaseDao中添加方式

public List queryForPage(final String hql, final int offset,  

           final int length);

在Dao的完成类JianSheDWDaoImpl中完成方式

public List queryForPage(final String hql, final int offset,  

           final int length) {  

       List list = getHibernateTemplate().executeFind(new HibernateCallback() {  

           public Object doInHibernate(Session session)  

                   throws HibernateException, SQLException {  

               Query query = session.createQuery(hql);  

               query.setFirstResult(offset);  

               query.setMaxResults(length);  

               List list = query.list();  

               return list;  

           }  

       });  

       return list;  

   }

在service笼统层接口JianSheDWService中添加方式

public PageBean queryForPage(int pageSize,int currentPage);  

在service完成类中完成方式

public PageBean queryForPage(int pageSize, int page) {  

       final String hql = from JianSheDWBean ; // 查询语句

       int allRow = this.baseDao.getAllRowCount(hql); // 总记实数

       int totalPage = PageBean.countTotalPage(pageSize, allRow); // 总页数

       final int offset = PageBean.countOffset(pageSize, page); // 以后页起头记实

       final int length = pageSize; // 每页记实数

       final int currentPage = PageBean.countCurrentPage(page);  

       List JianSheDWBean list = this.baseDao.queryForPage(hql, offset, length); // 一页 的记实

       // 把分页信息保存到Bean中

       PageBean pageBean = new PageBean();  

       pageBean.setPageSize(pageSize);  

       pageBean.setCurrentPage(currentPage);  

       pageBean.setAllRow(allRow);  

       pageBean.setTotalPage(totalPage);  

       pageBean.setList(list);  

       pageBean.init();  

       return pageBean;  

   }

在视图层action中成立分页模子

package com.fishing.action.lcq;  

import com.fishing.common.bean.JianSheDWBean;  

import com.fishing.common.bean.PageBean;  

import com.fishing.service.lcq.JianSheDWService;  

import com.opensymphony.xwork2.ActionSupport;  

@SuppressWarnings( serial )  

public class GetInfoJSDWListAction extends ActionSupport {  

   private int page; // 第几页

   private PageBean pageBean; // 包括分布信息的bean

   private JianSheDWBean jianSheDWBean;  

   // private PageBean page;

   private JianSheDWService jianSheDWService;  

   public int getPage() {  

       return page;  

   }  

   public void setPage(int page) {  

       this.page = page;  

   }  

   public PageBean getPageBean() {  

       return pageBean;  

   }  

   public void setPageBean(PageBean pageBean) {  

       this.pageBean = pageBean;  

   }  

   public JianSheDWBean getJianSheDWBean() {  

       return jianSheDWBean;  

   }  

   public void setJianSheDWBean(JianSheDWBean jianSheDWBean) {  

       this.jianSheDWBean = jianSheDWBean;  

   }  

   public JianSheDWService getJianSheDWService() {  

       return jianSheDWService;  

   }  

   public void setJianSheDWService(JianSheDWService jianSheDWService) {  

       this.jianSheDWService = jianSheDWService;  

   }  

   @Override    

    public String execute() throws Exception {      

         

    //分页的pageBean,参数pageSize暗示每页显现记实数,page为以后页    

    this.pageBean = jianSheDWService.queryForPage(10, page);      

    return SUCCESS;  

   }  

}  

在jsp中编写分页

tr >

                                                    td

                                                        nbsp;  

                                                    /td

                                                    td

                                                        s:if test= %{pageBean.currentPage == 1}    

                                         首页      上一页  

                                            /s:if

                                                        s:else

                                                            a href= jianguan/getJSDWInfos.action?page=1 首页 /a

                                                            a

                                                               href= jianguan/getJSDWInfos.action?page= s:property value= %{pageBean.currentPage-1} / / 上一页 /a

                                                        /s:else

                                                    /td

                                                    td

                                                        s:if test= %{pageBean.currentPage != pageBean.totalPage}

                                                            a

                                                               href= jianguan/getJSDWInfos.action?page= s:property value= %{pageBean.currentPage+1} / 下一页 /a

                                                            a

                                                               href= jianguan/getJSDWInfos.action?page= s:property value= pageBean.totalPage / 尾页  

                                                            /a

                                                        /s:if

                                                        s:else  

                                         下一页  尾页  

                                            /s:else

                                                    /td

                                                    td

                                                        div align= center

                                                           页次  

                                                            s:property value= pageBean.currentPage /

                                                           /  

                                                            s:property value= pageBean.totalPage /

                                                            nbsp; nbsp; nbsp;共  

                                                            s:property value= pageBean.allRow /

                                                           记实  

                                                        /div

                                                        div align= center /div

                                                    /td

                                                /tr

下面只是代码的完成,没有声明设置配备摆设文件的设置配备摆设,读者依照环境设置配备摆设。


拒绝套路 试听有礼

数据已加密保证您的信息安全