java list分页工具类_java分页工具类

分页工具类被常常用到,大多数分页工具类都是大同小异,自己也写一个通用分页工具类,给入门者铺路,工具类仅供参考,可按你自己的业务修改。大神莫要吐槽,如有不当之处请指正。

文件:PageUtil.javapackage com.util;

import org.apache.commons.lang.builder.ToStringBuilder;

import org.apache.commons.lang.builder.ToStringStyle;

import java.util.List;

/**

* 分页工具(含页码)

* Created by cxq on 2017/11/22.

*/

public class PageUtil {

/**显示页码数量*/

public static final int SHOW_PAGE_NUM = 10;

/**记录集合*/

private List pageList  =  null;

/**当前页数*/

private int currPage = 1;

/**每页显示大小*/

private int pageSize  = 10;

/**总页数*/

private int totalPage  = 0;

/**总记录数*/

private long totalCount = 0;

/**开始页码*/

private int startPageNum;

/**结束页码*/

private int endPageNum;

public PageUtil(List pageList, int currPage, long totalCount) {

this(pageList, currPage, 0, totalCount);

}

public PageUtil(List pageList, int currPage, int pageSize, long totalCount) {

this.pageList = pageList;

this.currPage = currPage;

if (pageSize>0)

this.pageSize = pageSize;

this.totalCount = totalCount;

initPageNumber();

}

public List getPageList() {

return pageList;

}

public void setPageList(List pageList) {

this.pageList = pageList;

}

public int getCurrPage() {

return currPage;

}

public void setCurrPage(int currPage) {

this.currPage = currPage;

}

public int getPageSize() {

return pageSize;

}

public void setPageSize(int pageSize) {

this.pageSize = pageSize;

}

public int getTotalPage() {

this.totalPage = this.pageSize==0 ? 0 : (int)Math.ceil((double)this.totalCount / (double)this.pageSize);

return this.totalPage;

}

public void setTotalPage(int totalPage) {

this.totalPage = totalPage;

}

public long getTotalCount() {

return totalCount;

}

public void setTotalCount(long totalCount) {

this.totalCount = totalCount;

}

public int getStartPageNum() {

return startPageNum;

}

public void setStartPageNum(int startPageNum) {

this.startPageNum = startPageNum;

}

public int getEndPageNum() {

return endPageNum;

}

public void setEndPageNum(int endPageNum) {

this.endPageNum = endPageNum;

}

public boolean hasPreviousPage() {

return this.currPage > 1;

}

public boolean isHasPreviousPage() {

return this.hasPreviousPage();

}

public boolean hasNextPage() {

return this.currPage 

}

public boolean isHasNextPage() {

return this.hasNextPage();

}

/**

* 初始化页码(仿百度)

* startPageNum 开始页码

* endPageNum 结束页码

* 通过开始页码和结束页码,可以循环得到分页页码列表

*/

public void initPageNumber(){

if (this.getTotalPage() 

this.startPageNum = 1;

this.endPageNum = this.getTotalPage();

} else {

if (this.getCurrPage() <= SHOW_PAGE_NUM / 2 + 1) {

this.startPageNum = 1;

this.endPageNum = SHOW_PAGE_NUM;

} else {

this.startPageNum = this.getCurrPage() - (SHOW_PAGE_NUM / 2);

this.endPageNum = this.getCurrPage() + (SHOW_PAGE_NUM / 2 - 1);

if (this.endPageNum >= this.getTotalPage()) {

this.endPageNum = this.getTotalPage();

this.startPageNum = this.getTotalPage() - SHOW_PAGE_NUM + 1;

}

}

}

}

//转字符串(可选)

@Override

public String toString() {

return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);

}

}

以上类中方法 initPageNumber() 是参考了以下链接:

感谢分享者:http://blog.csdn.net/jasper_success/article/details/6664349

以下是测试类,模拟翻页测试,观看数据变化和页码情况。

文件:PageTest.javapackage com.util;

import java.util.ArrayList;

import java.util.List;

/**

* 测试翻页

* Created by cxq on 2017/11/22.

*/

public class PageTest {

public static void main(String[] arg0) {

//测试页码翻页

for(int i=0; i<20; i++) {

testPageNumber(i + 1, 10);

}

}

public static void testPageNumber(int currPage, int pageSize){

//模拟查询数据

int totalCount = 195;

List list = getData((currPage - 1) * pageSize, pageSize, totalCount);

PageUtil page = new PageUtil(list, currPage, totalCount);

//输出数据

//System.out.println(page);

//System.out.println("HasPreviousPage:" + page.isHasPreviousPage());

//System.out.println("HasPreviousPage:" + page.isHasNextPage());

//输出页码

System.out.print("当前第" + page.getCurrPage() + "页:");

for (int i=page.getStartPageNum(); i<=page.getEndPageNum(); i++) {

if (i==page.getCurrPage()) {

System.out.print(" " + i + " ");

} else {

System.out.print("[" + i + "]");

}

}

System.out.println(" "+page.getPageList());

}

/**

* 模拟查询数据

* @param offset 查询开启记录

* @param limit 查询多少条记录

* @param total 总记录

* @return 列表

*/

public static List getData(int offset, int limit, long total) {

List list = new ArrayList();

int end = offset + limit;

for (int i=offset; i

if (i>=total)

break;

list.add("item" + (i + 1));

}

return list;

}

}

控制台输出:当前第1页: 1 [2][3][4][5][6][7][8][9][10]

[item1, item2, item3, item4, item5, item6, item7, item8, item9, item10]

当前第2页:[1] 2 [3][4][5][6][7][8][9][10]

[item11, item12, item13, item14, item15, item16, item17, item18, item19, item20]

当前第3页:[1][2] 3 [4][5][6][7][8][9][10]

[item21, item22, item23, item24, item25, item26, item27, item28, item29, item30]

当前第4页:[1][2][3] 4 [5][6][7][8][9][10]

[item31, item32, item33, item34, item35, item36, item37, item38, item39, item40]

当前第5页:[1][2][3][4] 5 [6][7][8][9][10]

[item41, item42, item43, item44, item45, item46, item47, item48, item49, item50]

当前第6页:[1][2][3][4][5] 6 [7][8][9][10]

[item51, item52, item53, item54, item55, item56, item57, item58, item59, item60]

当前第7页:[2][3][4][5][6] 7 [8][9][10][11]

[item61, item62, item63, item64, item65, item66, item67, item68, item69, item70]

当前第8页:[3][4][5][6][7] 8 [9][10][11][12]

[item71, item72, item73, item74, item75, item76, item77, item78, item79, item80]

当前第9页:[4][5][6][7][8] 9 [10][11][12][13]

[item81, item82, item83, item84, item85, item86, item87, item88, item89, item90]

当前第10页:[5][6][7][8][9] 10 [11][12][13][14]

[item91, item92, item93, item94, item95, item96, item97, item98, item99, item100]

当前第11页:[6][7][8][9][10] 11 [12][13][14][15]

[item101, item102, item103, item104, item105, item106, item107, item108, item109, item110]

当前第12页:[7][8][9][10][11] 12 [13][14][15][16]

[item111, item112, item113, item114, item115, item116, item117, item118, item119, item120]

当前第13页:[8][9][10][11][12] 13 [14][15][16][17]

[item121, item122, item123, item124, item125, item126, item127, item128, item129, item130]

当前第14页:[9][10][11][12][13] 14 [15][16][17][18]

[item131, item132, item133, item134, item135, item136, item137, item138, item139, item140]

当前第15页:[10][11][12][13][14] 15 [16][17][18][19]

[item141, item142, item143, item144, item145, item146, item147, item148, item149, item150]

当前第16页:[11][12][13][14][15] 16 [17][18][19][20]

[item151, item152, item153, item154, item155, item156, item157, item158, item159, item160]

当前第17页:[11][12][13][14][15][16] 17 [18][19][20]

[item161, item162, item163, item164, item165, item166, item167, item168, item169, item170]

当前第18页:[11][12][13][14][15][16][17] 18 [19][20]

[item171, item172, item173, item174, item175, item176, item177, item178, item179, item180]

当前第19页:[11][12][13][14][15][16][17][18] 19 [20]

[item181, item182, item183, item184, item185, item186, item187, item188, item189, item190]

当前第20页:[11][12][13][14][15][16][17][18][19] 20

[item191, item192, item193, item194, item195]

08141478c915f303bf8c8f7212e70ca4.png

java分页工具类.zip

60314c932cf7a2ce1cfb10895e529674

已下载:49 次

原创文章,转载请注明出处:https://www.weizhixi.com/article/3.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值