package zj.page.util; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.TreeSet; import zj.check.util.CheckUtil; import zj.page.bean.Datagrid; import zj.sort.util.SortUtil; /** * 處理查詢結果后分頁排序類<br> * * @version 1.00 (2011.12.02) * @author 張軍 {@link <a target=_blank href="http://m.eyofj.com">張軍個人網站</a> <a target=_blank href="http://user.qzone.qq.com/360901061/">張軍QQ空間</a>} */ public class PageUtil { /** * list數據分頁 * * @param pages 數據集合 * @param pageNo 當前頁面(從1開始) * @param pageRows 每頁顯示行數 * @param sortName 排序名 * @param sortOrder 排序類型[asc,desc] * @return */ public static <T> Datagrid<T> getDatagrid(List<T> pages, int pageNo, int pageRows, String sortName, String sortOrder) { Datagrid<T> data = new Datagrid<T>(); // 設置總記錄數 data.setRows(pages); if (pages != null && pages.size() > 0) { // 設置總行數 data.setTotal(pages.size()); // 臨時總記錄數 Set<T> rowsOld = null; // SortedSet if (CheckUtil.isNull(sortName) || CheckUtil.isNull(sortOrder)) { // 如果沒有指定排序,則無序 rowsOld = new HashSet<T>(); } else { // 排序 SortUtil<T> cu = new SortUtil<T>(); cu.setSortName(sortName); cu.setSortOrder(sortOrder); rowsOld = new TreeSet<T>(cu); } // 添加臨時總記錄 rowsOld.addAll(pages); // 設置到臨時總記錄對象中 data.setRowsOld(rowsOld); // 清空對象中的總記錄 data.getRows().clear(); // 如果當前頁面小于等于0,則賦值1 if (pageNo <= 0) pageNo = 1; // 計算開始記錄索引 int startNum = (pageNo - 1) * pageRows + 1; // 記錄結束記錄索引 int endNum = pageNo * pageRows + 1; // 循環臨時記錄對象的數據 Iterator<T> it = rowsOld.iterator(); int _i = 0; while (it.hasNext()) { // 獲取臨時記錄中的對象(指向下一條記錄,如果不調用,則不會指向下一條記錄) T t = it.next(); // 過慮開始結束記錄索引中的數據 if (_i >= startNum - 1 && _i < endNum - 1) { // 如果臨時記錄中的大小小于索引 if (rowsOld.size() < _i + 1) break; data.getRows().add(t); } _i++; } } return data; } /** * list數據分頁 * * @param pages * @param pageNo * @param pageRows * @return */ public static <T> Datagrid<T> getDatagrid(List<T> pages, int pageNo, int pageRows) { return getDatagrid(pages, pageNo, pageRows, null, null); } /** * 計算頁數 * * @param total * @param rowsPerPage * @return */ public static int pageCount(int total, int rowsPerPage) { int pageCount = 0; int modNum = 0; pageCount = total / rowsPerPage; modNum = total % rowsPerPage; if (modNum != 0) { pageCount++; } return pageCount; } }
package zj.page.bean; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Set; import lombok.Getter; import lombok.Setter; /** * 處理查詢結果后排序類<br> * * @version 1.00 (2011.12.02) * @author 張軍 {@link <a target=_blank href="http://m.eyofj.com">張軍個人網站</a> <a target=_blank href="http://user.qzone.qq.com/360901061/">張軍QQ空間</a>} */ @Getter @Setter public class Datagrid<T> implements Serializable { private static final long serialVersionUID = 1l; public Datagrid(int total, List<T> rows) { this.total = total; this.rows = rows; } public Datagrid() { } /** 總數 **/ private int total = 0; /** 新數據集合 **/ private List<T> rows = new ArrayList<T>(); /** 舊數據集合 **/ private Set<T> rowsOld; }
本文為張軍原創文章,轉載無需和我聯系,但請注明來自張軍的軍軍小站,個人博客http://m.eyofj.com
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
