close

最近終於成功實作了Jqwidget grid + Mybatis pageHelper進行的資料分頁顯示,方法並不困難;

 

一般來說,當遇到非常龐大的資料量的時候。前端data table的資料顯示都會進行分頁取值,也就是傳遞目前所在頁面、畫面顯示筆數等等資訊到後端,

再由後端進行sql的查詢,一次只查詢固定範圍的資料以減輕系統負擔及提升效能。

本次我所使用的前端網頁元件是Jqwidget grid,使用json的資料格式來傳遞資訊,而Jqwidget 的dataadapter有為我們傳遞分頁資訊;

首先是資料的source取得格式:

要注意的是totalRecords,它是用來傳遞我們所查詢的資料總筆數的,有了它grid才能產生對應的頁數跟筆數資料供參考。

有了source,就可以給dataadapter處理了:

 基本上downloadcomplete裡也是處理總資料筆數,最後再給予jqx.grid資料來源就可以了。

 

緊接著是後端程式的處理,一開始搜尋資料的時候發現Mybatis自己的分頁查詢是先撈所有資料再作分頁,這樣跟我們的需求不符合,於是發現了Mybatis可以

用所謂plugin的方式去實作其內部查詢sql時使用的Interceptor類別,並且可將其修改成我們所需要的物理分頁方法,也就是每切換一頁就重新查詢一次資料,

很幸運的,網路上有前輩製作了Mybatis PageHelper的套件供使用,只要下載該套件使用就可以很輕鬆地達到我們的需求如下;

 以上是maven下載pagehelper以及所需的jsqlparser,完成之後我們可以在mybatis-config.xml設定如下;

設定完成後,我們就可以在查詢時調用,範例如下:

此處須注意mapper內填寫的查詢語句要用order by去排序過程式才能正常運作,另外也要把totalRecords當作json的一個參數傳回前端供grid使用,如果成功的話可以看到查詢畫面如下:

page1  

頁數、總筆數正確,而且按下一頁時會出現loading的提示的話,就表示我們已經成功完成物理

分頁功能了!

 

參考資料:

http://www.jqwidgets.com/jquery-widgets-documentation/documentation/java-integration/grid-server-side-sorting-paging-filtering-using-jsp.htm

https://github.com/pagehelper/Mybatis-PageHelper 

arrow
arrow
    全站熱搜

    squall75726 發表在 痞客邦 留言(0) 人氣()