我正在開發一個帶有MySQL數據庫的EJB3 java應用程序的檢票前端。該網站主要是提交表格和顯示錶格。對於這些表,我更喜歡創建與AjaxPagingNavigation非常好的IDataProviders。但是我有一些非常大的表,IDataProvider的大小函數實現起來有點棘手。通常我使用查詢計數,這在大多數情況下表現良好,但我有一些大型表,其中計數需要很長時間(3s +)。現在有幾個選擇我可以使用,但我並不是很高興使用其中的任何一個,所以這就是爲什麼我問,有沒有人知道爲大表實現size()函數的優雅解決方案?用於大型表格的Java wicket dataprovider大小爲
我在Google上發現的第一個選項是使用帶有限制結果的子查詢執行計數。但是因爲我主要使用命名查詢和EJB3,所以感覺很詭異,而且如果事情發生變化,可能很難維護。
第二個選擇是使用ListDataView,只是對錶進行有限查詢並省略大計數查詢的需要。這個解決方案是我迄今最喜歡的,但並不是最好的,因爲它(幾乎)總是獲得最大量的記錄。我還必須在存儲這個List對象或在請求之間再次查詢數據庫之間進行選擇。
我發現的最後一個選項是欺騙大小選項。我沒有實現這一點,但我可以使IDataProvider的size()函數返回類似pagesize + 1的內容。這帶來了一些其他問題,例如擁有一定數量的記錄。有檢查,以捕獲這些,但這也是混亂。
有人知道一個優雅的解決方案,在檢票中使用IDataProvider來顯示大型數據庫表的分頁表嗎?
非常感謝,馬丁
感謝您的回覆!我已經看過它,並且在第一個鏈接的文章中提到了一些問題。例如,當轉到帶有動態加載內容的頁面時,返回不起作用。不過謝謝你的提示,無論如何,我可能會是一個更好的解決方案。 – Martin