基本上有兩種方法
1.使用可滾動記錄集的游標進行分頁
2.使用SQL語句,如top,limit等
----------------------
1.select10000條記錄,要取出第11條到20條記錄,
使用可滾動的ResultSet,滾動到第11條,然後依次取出10條就OK了,
這樣分頁都在數據庫服務器上進行,數據庫服務器壓力大,耗內存。
(修正這裡的錯誤,分頁在客戶端進行,在數據量大的時候這樣分頁是不可取的,建議使用SQL語句分頁,多謝各位的指正
)
不過該法最簡單,實施分頁時,只需給定三個參數,sql語句,page和page_size參數
定義一個可滾動的ResultSet稍微有點麻煩
Connectioncn=*******;
stmt=cn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(sql);
這樣就可以使用
rs.absolute(pos)進行定位了,
其實如果使用forward-only的resultset也可以,只用rs.next()移動記錄集就可以了
2.使用SQL語句分頁,
以sql-server的top為例
selecttoppage_size*fromt_testwhereidnotin(selecttopSKIPidfromt_testorderbyid
desc)
orderbyiddesc
intskip=page_size*(page-1)
用這個方法分頁性能可能會好些,不過麻煩
3.如果使用ibatis,hibernate等,分頁已經內部實現了,設置一下就可以了,
其底層的代碼沒有具體看過,應該使用方法1,絕對不會使用方法2
(修正這裡的錯誤,ibatis,hibernate等使用的應該是sql語句分頁)