java分页的工具类_用Java写一个分页的工具类-Fun言

以前做分页的时候是每个需要分页的action下面写一大串分页的代码,今天就想可不可以将分页的代码单独写一个工具类,这样就可以随用随取了,所以就做出来了,把代码分享给大家,复制到你们的项目下面就可以直接用了

问题一:为什么要用工具类?

答:在我们的开发过程中有很多重复冗余的代码,将他们写在一个类里,当需要的时候调用就好,这样就提高了效率,减少了代码的冗余,减少了代码的耦合性

问题二:分页的工具类有什么好处?

答:好处当然很多,话不多说,你们自己看

1、写工具类前String pageNum_1=null;

//获取传递的参数,因为urlrewrite所以都传给tagname了

if(tags.getTagname().indexOf("/")>0){

String[] params=tags.getTagname().split("/");

tags.setTagname(params[0]);

pageNum_1=params[1];

}

/*查找热门文章*/

//设置初始序号

int orderNum=0;

article.setOrderNum(orderNum);

//查找前十的文章

List hotArticle=articleService.findHotArticle(article);

/*分页*/

//初始页码

int pageNum=1;

//计算,当传回来的有值时

if(pageNum_1!=null){

pageNum=Integer.parseInt(pageNum_1);

}

//每页条数

int currentPage=10;

//计算后的开始条数

int startPage=(pageNum-1)*currentPage;

//计算该标签下的总条数

int totalCount=articleService.findTagsArtCount(tags);

//计算总页数

int totalPage;

if(totalCount%currentPage>0){

totalPage=(totalCount/currentPage)+1;

}else{

totalPage=totalCount/currentPage;

}

//开始页数

if(pageNum>=5){

//如果大于5则是当前页数页数减3

tags.setBegin(pageNum-2);

}else{

//如果小于5则从一开始

tags.setBegin(1);

}

//结束页数

if(pageNum>5){

if(totalPage>=pageNum){

//用switch算结束

switch(totalPage-pageNum){

case 0:tags.setEnd(pageNum);break;

case 1:tags.setEnd(pageNum+1);break;

case 2:tags.setEnd(pageNum+2);break;

case 3:tags.setEnd(pageNum+3);break;

default:tags.setEnd(pageNum+3);

}

}else{

tags.setEnd(totalPage);

}

}else{

if(totalPage>5){

//用switch算结束

switch(totalPage-5){

default:tags.setEnd(6);

}

}else{

tags.setEnd(totalPage);

}

}

tags.setStartPage(startPage);

tags.setTotalCount(totalCount);

tags.setTotalPage(totalPage);

tags.setPageNum(pageNum);

tags.setCurrentPage(currentPage);

2、写工具类后/*分页*/

//初始页码

//页面请求页码数

String pageNum_1=request.getParameter("pageNum");

//获取数据库总条数

int totalCount=articleService.findCount(article);

//设置每页条数

int currentPage=10;

Page page=new Page();

pb=page.pagetool(pageNum_1, currentPage, totalCount);

效果很明显吧,好了,下面把教程贴出来

开发过程

一、建立一个分页bean,这里有所有分页需要用到的属性/**

*

*

Title:PageBean

*

Description: 分页需要的bean

* @author 任汉东

* @date 2017年5月24日下午5:38:44

*/

public class PageBean extends User{

private int pageNum; // 页码

private int currentPage; // 每页条数

private int totalPage; // 总页数

private int totalCount; // 总条数

private int startPage;//limit开始条数

private int begin;//foreach中的begin

private int end;//foreach里的end值

public int getPageNum() {

return pageNum;

}

public void setPageNum(int pageNum) {

this.pageNum = pageNum;

}

public int getCurrentPage() {

return currentPage;

}

public void setCurrentPage(int currentPage) {

this.currentPage = currentPage;

}

public int getTotalPage() {

return totalPage;

}

public void setTotalPage(int totalPage) {

this.totalPage = totalPage;

}

public int getTotalCount() {

return totalCount;

}

public void setTotalCount(int totalCount) {

this.totalCount = totalCount;

}

public int getStartPage() {

return startPage;

}

public void setStartPage(int startPage) {

this.startPage = startPage;

}

public int getBegin() {

return begin;

}

public void setBegin(int begin) {

this.begin = begin;

}

public int getEnd() {

return end;

}

public void setEnd(int end) {

this.end = end;

}

二、建立一个分页的工具类,这里叫Page,然后在里面写一个pagetool方法供我们调用,这里我都写注释了,代码可以直接复制使用/**

*

*

Title:Page

*

Description: 分页的工具类

* @author 任汉东

* @date 2018年7月31日上午1:31:17

*/

public class Page {

//分页的方法

public PageBean pagetool(String pageNum_1,int currentPage,int totalCount){

//传入三个必要值:1、页面请求的页码,2、每页需要几条数据,3、数据库总条数

//实例化分页bean

PageBean pagebean=new PageBean();

//初始页码

int pageNum=1;

//计算,当传回来的有值时

if(pageNum_1!=null){

pageNum=Integer.parseInt(pageNum_1);

}

//每页条数

//计算后的开始条数

int startPage=(pageNum-1)*currentPage;

//总条数

//计算总页数

int totalPage;

if(totalCount%currentPage>0){

totalPage=(totalCount/currentPage)+1;

}else{

totalPage=totalCount/currentPage;

}

//开始页数具体算法

if(pageNum>=5){

//如果大于5则是当前页数页数减3

pagebean.setBegin(pageNum-2);

}else{

//如果小于5则从一开始

pagebean.setBegin(1);

}

//结束页数具体算法,这里是显示前6页,根据自己项目需求更改

if(pageNum>5){

if(totalPage>=pageNum){

//用switch算结束

switch(totalPage-pageNum){

case 0:pagebean.setEnd(pageNum);break;

case 1:pagebean.setEnd(pageNum+1);break;

case 2:pagebean.setEnd(pageNum+2);break;

case 3:pagebean.setEnd(pageNum+3);break;

default:pagebean.setEnd(pageNum+3);

}

}else{

pagebean.setEnd(totalPage);

}

}else{

if(totalPage>5){

//用switch算结束

switch(totalPage-5){

default:pagebean.setEnd(6);

}

}else{

pagebean.setEnd(totalPage);

}

}

//将前端页面需要数据set进pagebean

pagebean.setStartPage(startPage);

pagebean.setTotalCount(totalCount);

pagebean.setTotalPage(totalPage);

pagebean.setPageNum(pageNum);

pagebean.setCurrentPage(currentPage);

return pagebean;

}

三、测试,这里写了一个main方法进行测试public static void main(String[] args) {

Page page=new Page();

PageBean pagebean=new PageBean();

//这里前端请求的页码必须为string,不然无法确认是否为空

String pagenum_1="3";

pagebean=page.pagetool(pagenum_1, 10, 128);

System.out.println("开始条数:"+pagebean.getStartPage());

System.out.println("每页条数:"+pagebean.getCurrentPage());

System.out.println("总条数:"+pagebean.getTotalCount());

System.out.println("请求的页码:"+pagebean.getPageNum());

System.out.println("总页数:"+pagebean.getTotalPage());

System.out.println("foreach中begin值:"+pagebean.getBegin());

System.out.println("foreach中end值:"+pagebean.getEnd());

}

这里我们传入请求页码为第三页,每页10条数据,数据库总数据为128条,得到如下结果开始条数:20

每页条数:10

总条数:128

请求的页码:3

总页数:13

foreach中begin值:1

foreach中end值:6

四、调用分页工具类,在需要的action进行调用即可/*分页*/

//初始页码

//页面请求的页码数

String pageNum_1=request.getParameter("pageNum");

//获取数据库总条数,自行用jdbc获取

int totalCount=articleService.findCount(article);

//设置每页条数

int currentPage=10;

//实例化工具类

Page page=new Page();

//调用方法将得到的数据存到pagebean中

pb=page.pagetool(pageNum_1, currentPage, totalCount);

//。。。。。。

//。。。。

//接下来就可以用获得的数据为所欲为了。。。

五、前端调用返回数据,在这里核心是用foreach调用,都写了注释所以比较乱,具体是用就是用在后台获取的begin和end值来控制分页页码的显示,然后用if判断遍历的数值和在后台获取的当前页码是否相等,相等就高亮显示,否则不高亮显示

OK,这样就完成了对分页工具类的开发了,代码可以直接拿去用,按照我说的方法,绝对可以成功

你还没有登录,请先使用 QQ登录 或 注册!

文章评论

发表评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值