首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Hibernate 分頁查詢:設計模式與完整代碼實現

     編輯:Java 相關知識

Hibernate 分頁查詢:設計模式與完整代碼實現

核心參數設計

參數來源說明
currentPage請求參數 page當前頁碼(從 1 開始),Integer.parseInt(request.getParameter("page"))
pageSize固定配置每頁記錄數,如 int pageSize = 5;
totalCount數據庫統計select count(*) from Users
totalPageCount計算得出(totalCount + pageSize - 1) / pageSize,至少為 1

DAO 層分頁查詢實現

public List findPagedAll(int currentPage, int pageSize) {
    String queryString = "from User";
    Query queryObject = getSession().createQuery(queryString);
    queryObject.setFirstResult((currentPage - 1) * pageSize); // 偏移量
    queryObject.setMaxResults(pageSize);                      // 限制筆數
    return queryObject.list();
}

前端頁面控制邏輯

上一頁 / 下一頁鏈接

<c:if test="${currentPage > 1}">
    <a href="listuser.do?page=${currentPage-1}">上一頁</a>
</c:if>
<c:if test="${currentPage <= 1}">
    上一頁 <!-- 僅顯示文本,無鏈接 -->
</c:if>

<c:if test="${currentPage < totalPageCount}">
    <a href="listuser.do?page=${currentPage+1}">下一頁</a>
</c:if>

數據展示

<c:forEach items="${users}" var="user">
    ${user.id} - ${user.username}
</c:forEach>

下拉框跳轉頁面

<script>
function jumpPage(select) {
    var newUrl = "/hibernate_page/index.jsp?page=" + select.value;
    document.location = newUrl;
}
</script>

<select onchange="jumpPage(this);">
    <c:forEach begin="1" end="${totalPageCount}" var="i">
        <option value="${i}" ${currentPage == i ? 'selected' : ''}>${i}頁</option>
    </c:forEach>
</select>

關鍵設計要點

  1. 參數校驗:確保 currentPage 在 [1, totalPageCount] 範圍內
  2. 零記錄處理:totalPageCount 計算結果為 0 時強制設為 1,避免除零錯誤
  3. 偏移量計算:(currentPage - 1) * pageSize,首頁偏移為 0
  4. 前後端協議:頁碼從 1 開始,與用戶直覺一致
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved