日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java ee 分页_【JavaEE】JavaEE分页实践

發布時間:2025/3/13 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java ee 分页_【JavaEE】JavaEE分页实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:鄒峰立,微博:zrunker,郵箱:zrunker@yahoo.com,微信公眾號:書客創作,個人平臺:www.ibooker.cc。

本文選自書客創作平臺第56篇文章。閱讀原文 。

書客創作

分頁功能是現在網站開發當中,在常見不過的功能,幾乎是所有網站都會用到這么一個功能,而實現分頁功能的方式也很多。

例如:采用subList()方法進行分割,簡單來說就是先查詢數據庫中所有相關的數據,將查詢出來的數據保存到list列表當中,然后通過list.subList(fromIndex, toIndex);進行拆分每一頁要顯示的數據。

ArrayList allList = new ArrayList<>();

allList.subList(fromIndex, toIndex);

但是采用這種方式有一個很大的弊端,就是當數據庫中有很多數據(上百萬)的時候,那么第一次獲取數據將會非常緩慢,而且獲取出來的數據也非常龐大,這么龐大的數據也許用戶不會全部查看,浪費大量資源。

那么今天我要實現的一種分頁方式是通過數據庫分頁查詢(MySQL:limit、Oracle:rownum)結合前端框架jQuery Pagination來實現,在本實例中采用的數據庫是MySQL。

jQuery Pagination簡介

官方:When you have a a large list of items (e.g. search results or news articles), you can display them grouped in pages and present navigational elements to move from one page to another. This plugin creates these navigational elements.

簡單來說該插件就是用來將一個龐大的列表,分頁顯示的。

參數介紹:

callback:回調方法,是用戶點擊分頁(上一頁,下一頁等)的時候執行的函數。

current_page:當前頁。

items_per _page:每個頁面的數量,最小值1。注意:這個值只計算頁面的數量。默認值:10。

link_to:鏈接分頁鏈接的目標。通常通過一個onclick事件觸發頁面選擇。如果鏈接包含字符串id,它將替換為頁碼。默認值:#。

num_display _entries:最大數量的頁碼鏈接。設置為0顯示一個簡單的“前/下一個”導航。默認值:11。

next_text:下一頁,默認值:next。

next_show _always:是否總是展示下一頁,默認true。

prev_text:上一頁。

prev_show _always:是否總是展示上一頁,默認true。

num_edge _entries:如果這個數字設置為1時,第一個和最后一個鏈接頁面總是顯示,獨立于當前位置和能見度num_display _entries設定的約束。你可以設置更大數字顯示鏈接。默認值:0。

ellipse_text:頁碼之間的省略號, 默認:...。

load_first _page:頁面加載完后是否加載第一頁數據,true/false。

MySQL分頁查詢,后臺處理

MySQL分頁查詢其實很簡單只需要使用limit關鍵字即可,通常為了優化SQL,會在limit中添加order by。

SELECT

FROM tablename

ORDER BY id DESC

LIMIT limit_start, limit_count

同時還要查詢數據庫中該數據的總數:

SELECT IFNULL(COUNT(id), 0) FROM tablename

為了配合前端插件,需要在后臺寫一個dto,在這個dto類中至少需要包括每頁顯示多少條記錄,當前頁,總記錄,一共多少頁,要顯示的數據列表。

public class Pager {

private int pageSize;// 每頁顯示多少條記錄

private int currentPage;// 當前第幾頁數據

private int totalRecord;// 一共多少條記錄

private int totalPage;// 一共多少頁

private List dataList;// 要顯示的數據

// getter/setter方法

}

泛型T是要顯示的數據對象。

通常頁面上傳遞過來的數據是頁碼page (currentPage)和每頁要顯示的數據(pageSize),所以我們要重構SQL查詢的參數,LIMIT limit_start, limit_count。

int limit_start= (page -1) * pageSize;

int limit_count= pageSize;

通過相應的SQL語句能夠查詢出當前頁要顯示的數據,和總記錄數。

// 查詢列表數據總數

totalRecord = articleDao.queryArticleDataListCount(aIsdelete, aIsallow);

totalPage = totalRecord / pageSize;// 總頁數

if (totalRecord % pageSize != 0) {

totalPage++;

}

總頁數=總記錄/每頁數量。但是這里要注意一個細節,計算總頁數的時候,當數據不滿一頁顯示的數據的時候,要將總頁數增加1。

這樣就把dto中類所需要的所有變量值得到:

currentPage,pageSize由頁面傳遞過來。totalRecord,dataList由數據查詢得到。totalPage是計算得到。

Web頁面處理,三步走

首頁jquery.pagination插件是依賴jQuery,所以在頁面中引入jquery和jquery.pagination。

其次添加div用來顯示頁碼,同時引入分頁樣式:

最后是設置jquery.pagination參數和回調方法:

$(function() {

$("#News-Pagination").pagination(${pager.totalRecord}, {

items_per_page : ${pager.pageSize},// 每頁顯示多少條記錄

current_page : ${pager.currentPage} - 1,// 當前頁數

num_display_entries : 5,// 分頁顯示條目數

next_text : "下一頁",

prev_text : "上一頁",

num_edge_entries : 0,// 連接分頁主體,顯示的條目數

load_first_page : false,

callback : handlePaginationClick

});

});

function handlePaginationClick(new_page_index, pagination_container) {

var url = "web/article/list/" + (new_page_index + 1);

window.location.href = url;

return false;

};

最后看看最終實現效果:

分頁效果圖

微信公眾號:書客創作

總結

以上是生活随笔為你收集整理的java ee 分页_【JavaEE】JavaEE分页实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。