zoukankan      html  css  js  c++  java
  • ssh之雇员管理系统(10)分页实现

    一、分页的实现原理

    1. 得到数据库的总记录为query.list,当前页数pageNow,每页显示多少记录pageSize,一共多少条记录cowPage
    2. 分别求出以上的数据,根据以上的数据配置出不同的求法
    • showListEmp函数用于显示数据库的所有记录,那我们想,他有几个参数呢?pageNow和pageSize,传入两个参数,当前页是在我们点击页面的数字要进入的页面,即根据当前的页和每页显示多少记录来显示记录,那他返回的一定是个集合,这样我们就很好的显示出来啦。

    我们知道数据库语句啦,但是如何显示pageSize条记录呢?

        public List showListEmp(int pageNow, int pageSize) {
            String hql = "from Employee  order by id";//查询所有
            return this.executeQueryByPage(hql, null, pageNow, pageSize);
    //        return this.executeQuery(hql, null);
            
        }
        public List executeQueryByPage(String hql, Object[] parameters,
                int pageNow, int pageSize) {
            Query query = this.sessionFactory.getCurrentSession().createQuery(hql);
    //        System.out.println("query="+query.list());
            if (parameters != null && parameters.length > 0) {
                for (int i = 0; i < parameters.length; i++) {
                    query.setParameter(i, parameters[i]);
                }
            }
    //        System.out.println("list="+query.setFirstResult((pageNow-1)*pageSize).list());
    //        System.out.println("pageNow="+pageNow+pageSize);
            return query.setFirstResult((pageNow-1)*pageSize).setMaxResults(pageSize).list();
        }

    这里我们让他去调用两外一个公用的函数executeQueryByPage方法,通过query.setFirstResult((pageNow-1)*pageSize).setMaxResults(pageSize).list()来返回list集合。

    • 那我们现在要知道有多少页,才能做分页,现在我们要怎样求得页数呢?

    首先countEmp函数用于查找所有的记录数

        public int countEmp(int pageSize) {
            String hql = "select count(*) from Employee";//查询记录数
            return this.queryPageCount(hql, null, pageSize);
            
        }
        /**
         * 分页查询
         */
        public int queryPageCount(String hql, Object[] parameters, int pageSize) {
            Object object = this.uniqueQuery(hql, null);
            int cowPage = Integer.parseInt(object.toString());
            System.out.println("cowPage="+cowPage+"* "+object);
            return (cowPage-1)/(pageSize+1);
        }
        /**
         * 查询条数
         */
        public Object uniqueQuery(String hql, Object[] parameters) {
            Query query = this.sessionFactory.getCurrentSession().createQuery(hql);
            if (parameters != null && parameters.length > 0) {
                for (int i = 0; i < parameters.length; i++) {
                    query.setParameter(i, parameters[i]);
                }
            }
            return query.uniqueResult();
        }

    这样层层嵌套即可查询所需要饿

    • 在action中怎样跳转呢?而且怎样得到当前页面数呢?我们就在页面中当点击一个数时,传入一个数
          public ActionForward goListEmp(ActionMapping mapping, ActionForm form,
                  HttpServletRequest request, HttpServletResponse response)
                  throws Exception{
              String s_pageNow=request.getParameter("pageNow");
              int pageNow=1;
              if(s_pageNow!=null){
                  pageNow=Integer.parseInt(s_pageNow);
              }
      //        System.out.println("pageNow="+pageNow);
              
              
              // TODO Auto-generated method stub
              request.setAttribute("emplist", employeeServiceInter.showListEmp(pageNow,3));
              //测试
              int pageCount=employeeServiceInter.countEmp(3);
      //        System.out.println("pageCount="+pageCount);
              request.setAttribute("pageCount", pageCount);
              
              //打通线路
              return mapping.findForward("goListEmp");
          }
    • 页面中怎样引用呢?
       <c:forEach var="i" begin="1" end="${pageCount}">
          <a href="${pageContext.request.contextPath}/employee.do?flag=goListEmp&pageNow=${i }">${i }</a>
          </c:forEach>

    作者:少帅

    出处:少帅的博客--http://www.cnblogs.com/wang3680

    您的支持是对博主最大的鼓励,感谢您的认真阅读。

    本文版权归作者所有,欢迎转载,但请保留该声明。

    支付宝 微信
  • 相关阅读:
    关于在ubuntu下配置AMD显卡驱动的总结
    自然语言交流系统 phxnet团队 创新实训 个人博客 (十四)
    自然语言交流系统 phxnet团队 创新实训 个人博客 (十三)
    自然语言交流系统 phxnet团队 创新实训 个人博客 (十二)
    Qt编写地图综合应用4-仪表盘
    Qt编写地图综合应用3-省市区域图
    Qt编写地图综合应用2-迁徙图
    Qt编写地图综合应用1-闪烁点图
    个人总结的编程经验语录
    Qt编写的项目作品23-手机通讯录
  • 原文地址:https://www.cnblogs.com/wang3680/p/3081616.html
Copyright © 2011-2022 走看看