分頁查詢重構
分頁查詢中要能根據當前頁的頁號和頁面大小計算出每次分頁的第一條資料行號,這樣知道了當前要查詢頁的第一條資料行號和該頁共幾條記錄就能確定分頁需要查詢的資料範圍,在具體實現時可以按如下方式編寫
@Override
}
public Page ListByPage(Map params) {
Integer currentPage = (Integer)params.get( "pageIndex");
Integer pageSize = (Integer)params.get( "pageSize");
Integer pageSize = (Integer)params.get( "pageSize");
Integer startNo =(currentPage-1)*pageSize;
return templateQLService.findByPagedSQLBeanQuery("case-shareExpert-list", null, startNo, pageSize, DataVo.class);}
從上面的例子可以看出,這個方法是個業務層的方法為實現分頁查詢使用,首先方法接受的引數是個map型別,這是為了集中存放多個傳送的引數,經過解析map中的引數後,再根據當前頁號和頁面上資料個數計算分頁時當前頁面上的第一條資料行號,最後呼叫查詢資料庫的方法做分頁查詢。
這裡顯然存在兩個問題,一 這個業務方法接收的引數只有當前頁號和頁面大小兩個引數,但還放到了map中傳遞,這樣在接收這兩個引數時必然需要解析map再有轉換才能得到相應型別的引數,程式碼看起來顯然比較冗長,因此可以直接傳遞兩個引數,而不用map傳遞; 二 在計算起始資料行號時使用了一個小的計算公式Integer startNo =(currentPage-1)*pageSize;,而在其他模組中經常用到分頁功能,在編寫分頁查詢的業務方法時還會多次使用這種計算的功能,因此這種經常被使用的重複的計算公式應被封裝到一個物件中,以便今後其他模組呼叫
因此建立一個類封裝計算方法
public class Page implements Serializable {
。。。。。。
public static int getStartOfPage(int pageNo, int pageSize) {
return (pageNo - 1) * pageSize;
}
return (pageNo - 1) * pageSize;
}
}
封裝後就可以重新構造剛才的分頁查詢業務方法了,重構後的業務方法如下
@Override
public Page ListByPage(int pageNum, int pageSize) {
int startNo = Page.getStartOfPage(pageNum, pageSize);
return templateQLService.findByPagedSQLBeanQuery("case-shareExpert-list", null, startNo, pageSize, DataVo.class);
}
public Page
int startNo = Page.getStartOfPage(pageNum, pageSize);
return templateQLService.findByPagedSQLBeanQuery("case-shareExpert-list", null, startNo, pageSize, DataVo.class);
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/750077/viewspace-1437679/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Elasticsearch 分頁查詢Elasticsearch
- ssh 分頁查詢
- oracle分頁查詢Oracle
- JS重構分頁JS
- MySQL的分頁查詢MySql
- ThinkPhp框架:分頁查詢PHP框架
- 分頁查詢優化優化
- NET 集合分頁查詢
- MySQL 多表查詢分頁MySql
- Oracle的分頁查詢Oracle
- Oracle分頁查詢格式Oracle
- Lucene的分頁查詢
- elasticsearch查詢之大資料集分頁查詢Elasticsearch大資料
- 分庫分表後的分頁查詢
- indexdb實現分頁查詢Index
- AntDesignBlazor示例——分頁查詢Blazor
- MySQL分頁查詢優化MySql優化
- Oracle分頁查詢格式(十三)Oracle
- Oracle分頁查詢格式(十二)Oracle
- Oracle分頁查詢格式(十一)Oracle
- Oracle分頁查詢格式(八)Oracle
- Oracle分頁查詢格式(九)Oracle
- Oracle分頁查詢格式(十)Oracle
- oracle分頁查詢語句Oracle
- Oracle分頁查詢之order byOracle
- oracle sql分頁查詢(一)OracleSQL
- 分頁查詢初接觸
- 關於批次分頁查詢
- 批次分頁查詢問題?
- Oracle總結【SQL細節、多表查詢、分組查詢、分頁】OracleSQL
- MySQL——優化巢狀查詢和分頁查詢MySql優化巢狀
- hibernate 通用分頁,查詢分頁的泛型類泛型
- 【記錄】SSH分頁查詢功能
- SSH框架下的分頁查詢框架
- ssh框架中的分頁查詢框架
- Oracle分頁查詢語句(七)Oracle
- Oracle分頁查詢語句(六)Oracle
- Oracle分頁查詢語句(五)Oracle