Hibernate 分页的设计和编码

阿超 发表于 2009-09-05 18:19 | 来源: | 阅读 222 次

分页的设计和编码, 代码下载请访问: Hibernate + JSP 分页代码

1. 当前页码的表单参数 listuser.do?page=2
    同时转换成一个 int 类型的页码变量
    int currentPage = Integer.parseInt(
        request.getParameter("page");// 当前页

2. 下一页 listuser.do?page=${currentPage+1}
   上一页 listuser.do?page=${currentPage-1}
3. 一页显示多少数据
    int pageSize = 5;//每页显示的数据数
4. 总页数 totalPage
    1) 先从数据库取得总记录数
    dao.UserDAO#getUserTotalCount()
        int totalCount = executeQuery("select count(*) from Users");
    2) 根据一页的数据类计算出总页数
        dao.UserManager#getTotalPage(int pageSize)
           // 得到页面总数
        int totalPageCount = ((totalCount + pageSize) – 1) / pageSize;

        if(totalPageCount == 0) {
            totalPageCount = 1;
        }
5. 从数据库里把第currentPage页的数据读取出来(Hibernate), DAO 层的代码
dao.UserDAO#findPagedAll(int currentPage, int pageSize)

    两个参数: currentPage 当前页(从1开始的)

                pageSize 取多少数据
    String queryString = "from User";
    Query queryObject = getSession().createQuery(queryString);

    queryObject.setFirstResult((currentPage – 1) * pageSize);
    queryObject.setMaxResults(pageSize);

    List result = queryObject.list();

6. 在前台显示上下页的链接,并根据总页数的上下限来避免让用户跳到第-1页或者比最大页数还大的页码哪里
    <c:if test="${currentPage > 1}">
       [ 上一页的链接 ]
    </c:if>
    <c:if test="${currentPage <= 1}">
       [ 上一页的文本 ]
    </c:if>

7. 通过 forEach 来显示数据
<c:forEach items="${users}" var="user" >
  ${user.id}
  ${user.username}
<c:/forEach>

8. 通过下拉菜单来跳转页面

转到
    <script>
    // 页面跳转函数
    // 参数: 包含网址的选择框(SELECT元素)
    function jumpPage(select) {
        var newUrl = "/hibernate_page/index.jsp?page=" + select.value;
        //alert(newUrl);
        document.location = newUrl;
    }
    </script>

      <!– 输出 HTML SELECT 元素, 并选中当前页面编码 –>
      <select onchange=’jumpPage(this);’>
      <option value="1" selected>1页</option>
      <option value="2"  >2页</option>
      </select>

喜欢Java豆技术站点的文章,那就通过 RSS Feed 功能订阅阅读吧!

我要评论

*

* 绝不会泄露



返回首页 | 关于我们 | 联系我们 | 广告合作 | 网站地图 | 友情链接 | 版权声明 | 模板设计