public class PaginationClass<T> implements Serializable{
public PaginationClass(){}
public PaginationClass(PaginationClass<T> page){
this.currentPage=page.getCurrentPage();
this.pageSize=page.pageSize;
this.startRow=pageSize*(currentPage-1)+1;
this.endRow=this.startRow+pageSize-1;
}
public PaginationClass(int currentPage,int pageSize){
this.currentPage=currentPage;
this.pageSize=pageSize;
this.startRow=pageSize*(currentPage-1)+1;
this.endRow=this.startRow+pageSize-1;
}
private static final long serialVersionUID = 4008467432343431266L;
private int total;//总记录数
private int totalPage;//总页数
private int currentPage;//当前页,从1开始
private int pageSize;//页大小
private List<T> objects;//页数据
private int startRow;//起始行,从1开始计数
private int endRow;//结束行,从1开始计数
public int getTotalPage() {
totalPage=total/pageSize;
if(total%pageSize!=0)
totalPage=totalPage+1;
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public List<T> getObjects() {
return objects;
}
public void setObjects(List<T> objects) {
this.objects = objects;
}
public int getStartRow() {
return startRow;
}
public void setStartRow(int startRow) {
this.startRow = startRow;
}
public int getEndRow() {
return endRow;
}
public void setEndRow(int endRow) {
this.endRow = endRow;
}
}
freemarker的分页模板:
<#macro p page totalpage totalrecord=0 maxsteps=6>
<#assign ipage=page?string("##")?number>
<#if maxsteps <= 0>
<#assign maxsteps=5>
</#if>
<#assign offset = ((ipage - 1) / maxsteps)?int>
<#assign offsetLast = ((totalpage - 1) / maxsteps)?int>
<#-- url附加参数的判断 -->
<#assign requestParams = "">
<#if (Parameters?? && Parameters?keys?size >0)>
<#list Parameters?keys as paramKey>
<#if (paramKey!="page")>
<#assign requestParams = requestParams+'&' +paramKey+"="+ Parameters[paramKey]?url("iso-8859-1")>
</#if>
</#list>
</#if>
<#-- 总记录-->
<a class="disabled">总计 ${totalrecord!''} 条记录</a> <a class="disabled">共 ${totalpage} 页</a>
<#-- 首页 -->
<#if ipage gt 1>
<a href="?page=1${requestParams}"><<</a>
<#else>
<a class="disabled"><<</a>
</#if>
<#-- 前组-->
<#if offset gt 0>
<a href="?page=${(offset * maxsteps)?string("##")}${requestParams}">…</a>
<#else>
<a>…</a>
</#if>
<#-- 当前组中的页号-->
<#if (offset + 1) * maxsteps < totalpage>
<#assign pagelist = (offset + 1) * maxsteps>
<#else>
<#assign pagelist = totalpage>
</#if>
<#if ipage gt 0 && ipage lte totalpage>
<#list (offset * maxsteps + 1)..pagelist as num>
<#if ipage != num>
<a href="?page=${num?string("##")}${requestParams}">${num?string("##")}</a>
<#else>
<a class="current">${num?string("##")}</a>
</#if>
</#list>
</#if>
<#-- 下组 -->
<#if offset lt offsetLast>
<a href="?page=${((offset + 1) * maxsteps + 1)?string("##")}${requestParams}">…</a>
<#else>
<a>…</a>
</#if>
<#-- 尾页 -->
<#if ipage lt totalpage>
<a href="?page=${totalpage?string("##")}${requestParams}">>></a>
<#else>
<a>>></a>
</#if>
<#-- 前一页 -->
<#if ipage gt 1>
<a href="?page=${(ipage - 1)?string("##")}${requestParams}">上一页</a>
<#else>
<a class="上一页">上一页</a>
</#if>
<#-- 后一页 -->
<#if ipage lt totalpage>
<a href="?page=${(ipage + 1)?string("##")}${requestParams}">下一页</a>
<#else>
<a class="下一页">下一页</a>
</#if>
</#macro>
模板引用分页:
<@pageguide.p page=page totalpage=totalpage total=total/>