java通用分页导航设计
工作中经常会有表格数据的展示,数据量少时还好,一旦数据量特别大时,我们就要考虑分页以降低数据库的压力,那么下面简单介绍下我的分页导航设计,不对的地方望指正。
1.首先我们新建一个通用的分页类PgeUtils
public class PageResult<T> {
private int totalpage;//总页码
private int totalcount;//总条数
private int pagenum;//当前页码
private int pagesize = 10;//初始化每页数量
private List<T> list;
public int getPagenum() {
return pagenum;
}
public void setPagenum(int pagenum) {
this.pagenum = pagenum;
}
public int getPagesize() {
return pagesize;
}
public void setPagesize(int pagesize) {
this.pagesize = pagesize;
}
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 List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
}
2.如何动态生成分页导航栏
思路:
分页导航无非由以下几个部分组成
首页,尾页,上一页,下一页以及具体的每个页码
下面是具体代码实现(此处使用了inspinia的样式。万变不离其宗,大概的思想都一样。)
public class PageUtil {
/**
* 获取分页html
*
* @param url要跳转的url
* @param pagecount总页数
* @param pageCurrent当前页码
* @param pagesize每页的数据量
* @return
*/
public static String getPaginationHtml(String url, Integer pagecount, Integer pageCurrent, Integer pagesize) {
if (pagecount == 0) {
return "";
}
String urlNew = url.replace("{pagesize}", pagesize + "").replace("{pagecount}", pagecount + "");
String first = urlNew.replace("{pageCurrent}", 1 + "");
String prev = urlNew.replace("{pageCurrent}", (pageCurrent - 1) + "");
String next = urlNew.replace("{pageCurrent}", (pageCurrent + 1) + "");
String last = urlNew.replace("{pageCurrent}", pagecount + "");
StringBuffer html = new StringBuffer();
html.append("<li class=\"footable-page-arrow" + (pageCurrent <= 1 ? " disabled" : "") + "\"><a href=\""
+ (pageCurrent <= 1 ? "#" : first) + "\">«</a></li>");
html.append("<li class=\"footable-page-arrow" + (pageCurrent <= 1 ? " disabled" : "") + "\"><a href=\""
+ (pageCurrent <= 1 ? "#" : prev) + "\">‹</a></li>");
for (int i = 0; i < pagecount; i++) {
String urlItem = urlNew.replace("{pageCurrent}", (i + 1) + "");
html.append("<li class=\"footable-page" + (((i + 1) == pageCurrent) ? " active" : "") + "\"><a href=\""
+ urlItem + "\">" + (i + 1) + "</a></li>");
}
html.append("<li class=\"footable-page-arrow" + (pageCurrent == pagecount ? " disabled" : "") + "\"><a href=\""
+ (pageCurrent == pagecount ? "#" : next) + "\">›</a></li>");
html.append("<li class=\"footable-page-arrow" + (pageCurrent == pagecount ? " disabled" : "") + "\"><a href=\""
+ (pageCurrent == pagecount ? "#" : last) + "\">»</a></li>");
return html.toString().replaceAll("null", "");
}
}
3.再来看看如何调用这个获取分页导航的具体代码及效果图
String paginationHtml = PageUtil.getPaginationHtml(
"/project/index?pagecount={pagecount}&pageCurrent={pageCurrent}&pagesize={pagesize}", pagecount,pageCurrent, pagesize);
4.总结
此文简单讲解了一种动态获取分页导航的方式,实现的方式有很多种,如有不对之处,请不吝指正。