首页>代码>spring mvc+mybatis+mysql+maven+bootstrap-table整合实现增删查改简单实例>/demo-bstable/src/main/java/com/xe/demo/common/pojo/PageAjax.java
001package com.xe.demo.common.pojo;
002 
003import java.io.Serializable;
004import java.util.Collection;
005import java.util.List;
006 
007import com.github.pagehelper.Page;
008 
009/**
010 * 封装分页请求结果
011 * @author CZH
012 */
013@SuppressWarnings({"rawtypes", "unchecked"})
014public class PageAjax<T> implements Serializable {
015    private static final long serialVersionUID = 1L;
016    /**当前页*/
017    private int pageNo;
018    /**每页的数量*/
019    private int pageSize;
020    /**当前页的数量*/
021    private int size;
022    /**排序*/
023    private String orderBy;
024    /**当前页面第一个元素在数据库中的行号*/
025    private int startRow;
026    /**当前页面最后一个元素在数据库中的行号*/
027    private int endRow;
028    /**总记录数*/
029    private long total;
030    /**总页数*/
031    private int pages;
032    /**结果集*/
033    private List<T> rows;
034    /**第一页*/
035    private int firstPage;
036    /**前一页*/
037    private int prePage;
038    /**下一页*/
039    private int nextPage;
040    /**最后一页*/
041    private int lastPage;
042    /**是否为第一页*/
043    private boolean isFirstPage = false;
044    /**是否为最后一页*/
045    private boolean isLastPage = false;
046    /**是否有前一页*/
047    private boolean hasPreviousPage = false;
048    /**是否有下一页*/
049    private boolean hasNextPage = false;
050    /**导航页码数*/
051    private int navigatePages;
052    /**所有导航页号*/
053    private int[] navigatepageNums;
054 
055    public PageAjax() {
056    }
057 
058    /**
059     * 包装Page对象
060     * @param list
061     */
062    public PageAjax(List<T> list) {
063        this(list, 8);
064    }
065 
066    /**
067     * 包装Page对象
068     * @param list page结果
069     * @param navigatePages 页码数量
070     */
071    public PageAjax(List<T> list, int navigatePages) {
072        if (list instanceof Page) {
073            Page page = (Page) list;
074            this.pageNo = page.getPageNum();
075            this.pageSize = page.getPageSize();
076//            this.orderBy = page.getOrderBy();
077 
078            this.pages = page.getPages();
079            this.rows = page;
080            this.size = page.size();
081            this.total = page.getTotal();
082            //由于结果是>startRow的,所以实际的需要+1
083            if (this.size == 0) {
084                this.startRow = 0;
085                this.endRow = 0;
086            } else {
087                this.startRow = page.getStartRow() + 1;
088                //计算实际的endRow(最后一页的时候特殊)
089                this.endRow = this.startRow - 1 + this.size;
090            }
091        } else if (list instanceof Collection) {
092            this.pageNo = 1;
093            this.pageSize = list.size();
094 
095            this.pages = 1;
096            this.rows = list;
097            this.size = list.size();
098            this.total = list.size();
099            this.startRow = 0;
100            this.endRow = list.size() > 0 ? list.size() - 1 : 0;
101        }
102        if (list instanceof Collection) {
103            this.navigatePages = navigatePages;
104            //计算导航页
105            calcNavigatepageNums();
106            //计算前后页,第一页,最后一页
107            calcPage();
108            //判断页面边界
109            judgePageBoudary();
110        }
111    }
112 
113    /**
114     * 计算导航页
115     */
116    private void calcNavigatepageNums() {
117        //当总页数小于或等于导航页码数时
118        if (pages <= navigatePages) {
119            navigatepageNums = new int[pages];
120            for (int i = 0; i < pages; i++) {
121                navigatepageNums[i] = i + 1;
122            }
123        } else { //当总页数大于导航页码数时
124            navigatepageNums = new int[navigatePages];
125            int startNum = pageNo - navigatePages / 2;
126            int endNum = pageNo + navigatePages / 2;
127 
128            if (startNum < 1) {
129                startNum = 1;
130                //(最前navigatePages页
131                for (int i = 0; i < navigatePages; i++) {
132                    navigatepageNums[i] = startNum++;
133                }
134            } else if (endNum > pages) {
135                endNum = pages;
136                //最后navigatePages页
137                for (int i = navigatePages - 1; i >= 0; i--) {
138                    navigatepageNums[i] = endNum--;
139                }
140            } else {
141                //所有中间页
142                for (int i = 0; i < navigatePages; i++) {
143                    navigatepageNums[i] = startNum++;
144                }
145            }
146        }
147    }
148 
149    /**
150     * 计算前后页,第一页,最后一页
151     */
152    private void calcPage() {
153        if (navigatepageNums != null && navigatepageNums.length > 0) {
154            firstPage = navigatepageNums[0];
155            lastPage = navigatepageNums[navigatepageNums.length - 1];
156            if (pageNo > 1) {
157                prePage = pageNo - 1;
158            }
159            if (pageNo < pages) {
160                nextPage = pageNo + 1;
161            }
162        }
163    }
164 
165    /**
166     * 判定页面边界
167     */
168    private void judgePageBoudary() {
169        isFirstPage = pageNo == 1;
170        isLastPage = pageNo == pages;
171        hasPreviousPage = pageNo > 1;
172        hasNextPage = pageNo < pages;
173    }
174 
175    public int getPageNo() {
176        return pageNo;
177    }
178 
179    public void setPageNo(int pageNo) {
180        this.pageNo = pageNo;
181    }
182 
183    public int getPageSize() {
184        return pageSize;
185    }
186 
187    public void setPageSize(int pageSize) {
188        this.pageSize = pageSize;
189    }
190 
191    public int getSize() {
192        return size;
193    }
194 
195    public void setSize(int size) {
196        this.size = size;
197    }
198 
199    public String getOrderBy() {
200        return orderBy;
201    }
202 
203    public void setOrderBy(String orderBy) {
204        this.orderBy = orderBy;
205    }
206 
207    public int getStartRow() {
208        return startRow;
209    }
210 
211    public void setStartRow(int startRow) {
212        this.startRow = startRow;
213    }
214 
215    public int getEndRow() {
216        return endRow;
217    }
218 
219    public void setEndRow(int endRow) {
220        this.endRow = endRow;
221    }
222 
223    public long getTotal() {
224        return total;
225    }
226 
227    public void setTotal(long total) {
228        this.total = total;
229    }
230 
231    public int getPages() {
232        return pages;
233    }
234 
235    public void setPages(int pages) {
236        this.pages = pages;
237    }
238 
239    public List<T> getRows() {
240        return rows;
241    }
242 
243    public void setRows(List<T> rows) {
244        this.rows = rows;
245    }
246 
247    public int getFirstPage() {
248        return firstPage;
249    }
250 
251    public void setFirstPage(int firstPage) {
252        this.firstPage = firstPage;
253    }
254 
255    public int getPrePage() {
256        return prePage;
257    }
258 
259    public void setPrePage(int prePage) {
260        this.prePage = prePage;
261    }
262 
263    public int getNextPage() {
264        return nextPage;
265    }
266 
267    public void setNextPage(int nextPage) {
268        this.nextPage = nextPage;
269    }
270 
271    public int getLastPage() {
272        return lastPage;
273    }
274 
275    public void setLastPage(int lastPage) {
276        this.lastPage = lastPage;
277    }
278 
279    public boolean isIsFirstPage() {
280        return isFirstPage;
281    }
282 
283    public void setIsFirstPage(boolean isFirstPage) {
284        this.isFirstPage = isFirstPage;
285    }
286 
287    public boolean isIsLastPage() {
288        return isLastPage;
289    }
290 
291    public void setIsLastPage(boolean isLastPage) {
292        this.isLastPage = isLastPage;
293    }
294 
295    public boolean isHasPreviousPage() {
296        return hasPreviousPage;
297    }
298 
299    public void setHasPreviousPage(boolean hasPreviousPage) {
300        this.hasPreviousPage = hasPreviousPage;
301    }
302 
303    public boolean isHasNextPage() {
304        return hasNextPage;
305    }
306 
307    public void setHasNextPage(boolean hasNextPage) {
308        this.hasNextPage = hasNextPage;
309    }
310 
311    public int getNavigatePages() {
312        return navigatePages;
313    }
314 
315    public void setNavigatePages(int navigatePages) {
316        this.navigatePages = navigatePages;
317    }
318 
319    public int[] getNavigatepageNums() {
320        return navigatepageNums;
321    }
322 
323    public void setNavigatepageNums(int[] navigatepageNums) {
324        this.navigatepageNums = navigatepageNums;
325    }
326 
327    @Override
328    public String toString() {
329        final StringBuffer sb = new StringBuffer("PageAjax{");
330        sb.append(" pageNo=").append(pageNo);
331        sb.append(", pageSize=").append(pageSize);
332        sb.append(", size=").append(size);
333        sb.append(", startRow=").append(startRow);
334        sb.append(", endRow=").append(endRow);
335        sb.append(", total=").append(total);
336        sb.append(", pages=").append(pages);
337        sb.append(", rows=").append(rows);
338        sb.append(", firstPage=").append(firstPage);
339        sb.append(", prePage=").append(prePage);
340        sb.append(", nextPage=").append(nextPage);
341        sb.append(", lastPage=").append(lastPage);
342        sb.append(", isFirstPage=").append(isFirstPage);
343        sb.append(", isLastPage=").append(isLastPage);
344        sb.append(", hasPreviousPage=").append(hasPreviousPage);
345        sb.append(", hasNextPage=").append(hasNextPage);
346        sb.append(", navigatePages=").append(navigatePages);
347        sb.append(", navigatepageNums=");
348        if (navigatepageNums == null) sb.append("null");
349        else {
350            sb.append('[');
351            for (int i = 0; i < navigatepageNums.length; ++i)
352                sb.append(i == 0 ? "" : ", ").append(navigatepageNums[i]);
353            sb.append(']');
354        }
355        sb.append('}');
356        return sb.toString();
357    }
358}
最近下载更多
xiaoaitx  LV8 1月2日
fff团团长  LV1 2024年9月7日
featherteng  LV1 2024年5月3日
h G24741  LV2 2024年3月12日
shuangfu  LV25 2023年9月6日
莉莉姆  LV1 2023年8月31日
279824554  LV2 2023年6月25日
MHB123  LV5 2023年6月3日
Fyx123456  LV1 2023年5月31日
张真狗  LV9 2023年5月22日
最近浏览更多
左明垚 7月27日
暂无贡献等级
taoshen95  LV16 4月6日
hezhihui 1月9日
暂无贡献等级
xiaoaitx  LV8 1月2日
Ella0902 2024年12月18日
暂无贡献等级
fff团团长  LV1 2024年9月7日
xingxiu  LV1 2024年6月8日
rudyfather 2024年6月4日
暂无贡献等级
yangzhou11 2024年5月18日
暂无贡献等级
huigui007 2024年5月16日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友