iBATIS分頁實例中ObjectDataSource的應用首先讓我們來看看屬性方面的特點,ObjectDataSource 控件內置了對分頁的支持。我們需要設置 ObjectDataSource 的 EnablePaging屬性,然後要設置SelectMethod、SelectCountMethod 、StartRowIndexParameterName和MaximumRowsParameterName 屬性。當 EnablePaging 屬性設置為 true 時,SelectParameters 集合包含兩個額外的參數,一個用於請求的第一行,另一個用於請求的行數。這兩個參數的名稱由StartRowIndexParameterName 和 MaximumRowsParameterName 屬性定義。SelectMethod應該返回從指定的索引處開始的請求的行數。因為數據可能不是按頁大小平均分割的,所以最後一頁可能包含較少的行。因此,請求的行數實際上是返回的最大行數。
上面提及的後四個屬性的含義很容易理解,簡單的說,我們要實現兩個方法,一個是返回總的記錄數(SelectCountMethod),一個則返回當前請求頁的記錄(SelectMethod),SelectMethod方法至少要包含兩個參數,以指定欲請求記錄的起始索引和欲返回的最大行數。
SelectCountMethod一般容易實現。而SelectMethod則比較麻煩,常見的解決方案是存儲過程,這樣的存儲過程通常與特定表緊密耦合,難以通用。
使用iBATIS時,我們通過ISqlMapper接口來訪問數據庫。其中的一個方法相當有用:
IList<T> QueryForList<T>(string statementName, object parameterObject, int skipResults, int maxResults);
前兩個參數作查詢之用,而後兩個參數則與ObjectDataSource的StartRowIndexParameterName 和 MaximumRowsParameterName 屬性的設計不謀而合!
這樣一來,我們就可以只關注查詢本身了,把分頁功能交由iBatis和ObjectDataSource來打理。最重要的是,這個方法相當通用,也不需對查詢語句作額外的處理。
我的測試數據為20萬條,翻頁所需時間在0.7秒左右,效果很不錯了,大家有興趣可以嘗試下。
iBATIS分頁實例中ObjectDataSource的應用就介紹到這裡,希望通過本文的介紹使你對iBATIS分頁實例中ObjectDataSource的應用有所更高的了解。