最近終於成功實作了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使用,如果成功的話可以看到查詢畫面如下:
頁數、總筆數正確,而且按下一頁時會出現loading的提示的話,就表示我們已經成功完成物理
分頁功能了!
參考資料:
留言列表