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; /** * 處理查詢結(jié)果后分頁(yè)排序類<br> * * @version 1.00 (2011.12.02) * @author 張軍 {@link <a target=_blank href="http://www.sfpk123.com">張軍個(gè)人網(wǎng)站</a> <a target=_blank href="http://user.qzone.qq.com/360901061/">張軍QQ空間</a>} */ public class PageUtil { /** * list數(shù)據(jù)分頁(yè) * * @param pages 數(shù)據(jù)集合 * @param pageNo 當(dāng)前頁(yè)面(從1開(kāi)始) * @param pageRows 每頁(yè)顯示行數(shù) * @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>(); // 設(shè)置總記錄數(shù) data.setRows(pages); if (pages != null && pages.size() > 0) { // 設(shè)置總行數(shù) data.setTotal(pages.size()); // 臨時(shí)總記錄數(shù) Set<T> rowsOld = null; // SortedSet if (CheckUtil.isNull(sortName) || CheckUtil.isNull(sortOrder)) { // 如果沒(méi)有指定排序,則無(wú)序 rowsOld = new HashSet<T>(); } else { // 排序 SortUtil<T> cu = new SortUtil<T>(); cu.setSortName(sortName); cu.setSortOrder(sortOrder); rowsOld = new TreeSet<T>(cu); } // 添加臨時(shí)總記錄 rowsOld.addAll(pages); // 設(shè)置到臨時(shí)總記錄對(duì)象中 data.setRowsOld(rowsOld); // 清空對(duì)象中的總記錄 data.getRows().clear(); // 如果當(dāng)前頁(yè)面小于等于0,則賦值1 if (pageNo <= 0) pageNo = 1; // 計(jì)算開(kāi)始記錄索引 int startNum = (pageNo - 1) * pageRows + 1; // 記錄結(jié)束記錄索引 int endNum = pageNo * pageRows + 1; // 循環(huán)臨時(shí)記錄對(duì)象的數(shù)據(jù) Iterator<T> it = rowsOld.iterator(); int _i = 0; while (it.hasNext()) { // 獲取臨時(shí)記錄中的對(duì)象(指向下一條記錄,如果不調(diào)用,則不會(huì)指向下一條記錄) T t = it.next(); // 過(guò)慮開(kāi)始結(jié)束記錄索引中的數(shù)據(jù) if (_i >= startNum - 1 && _i < endNum - 1) { // 如果臨時(shí)記錄中的大小小于索引 if (rowsOld.size() < _i + 1) break; data.getRows().add(t); } _i++; } } return data; } /** * list數(shù)據(jù)分頁(yè) * * @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); } /** * 計(jì)算頁(yè)數(shù) * * @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; /** * 處理查詢結(jié)果后排序類<br> * * @version 1.00 (2011.12.02) * @author 張軍 {@link <a target=_blank href="http://www.sfpk123.com">張軍個(gè)人網(wǎng)站</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() { } /** 總數(shù) **/ private int total = 0; /** 新數(shù)據(jù)集合 **/ private List<T> rows = new ArrayList<T>(); /** 舊數(shù)據(jù)集合 **/ private Set<T> rowsOld; }
本文為張軍原創(chuàng)文章,轉(zhuǎn)載無(wú)需和我聯(lián)系,但請(qǐng)注明來(lái)自張軍的軍軍小站,個(gè)人博客http://www.sfpk123.com
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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