Java 常用工具类(10) : 分页处理
程序员文章站
2022-07-13 09:54:49
...
Controller
@RequestMapping("/website_search")
public String websiteSearch(Model model,
HttpServletRequest request, @RequestParam(value = "page", required = false) Integer page) {
分页工具类,根据搜索的结果进行分页
import java.util.List;
import com.pro.huanbao.common.pojo.PageDatas;
/**
* @Title PagingUtils.java
* @Package com.pro.huanbao.common.utils
* @author wanpu_ly
* @dade 2017年11月3日 上午11:10:09
* @version V1.0
* 类说明: 分页
*/
public class PagingUtils {
/**
* @Title paging
* @param @param page 当前页
* @param @param allDatas 需要分页的数据集
* @param @param currentSize 每页数据条数
* @param @return
* @return PageDatas<E>
*/
public static <E> PageDatas<E> paging(Integer page, List<E> allDatas , Integer currentSize) {
try {
if(allDatas.size() == 0)
return null;
if (page == null || page == 0)
page = 1;
// 总记录数
long total = allDatas.size();//21
// 总页数
int pages;//2
// 每页记录数
if (total < currentSize) {
pages = 1;
}else {
if (total % currentSize == 0) {
pages = (int) (total / currentSize);
} else {
pages = (int) (total / currentSize + 1);
}
}
// 当前页数据第一个索引
int currentPage ;
if (page == 1) {
currentPage = 0;
}else {
currentPage = (page - 1) * currentSize;//20
}
// 当前页数据最后一个索引
int finalRecord;
// 当前页数据集
List<E> datas = null;
if (currentSize >= total) {
finalRecord = (int) total;
}else if (page == pages) {
finalRecord = (int) total;
}else {
finalRecord = currentPage + currentSize;
}
if (currentPage > total || finalRecord > total) {
return null;
}
if (currentSize >= total) {
datas = allDatas;
} else {
datas = allDatas.subList(currentPage, finalRecord);
}
PageDatas<E> pageDatas = new PageDatas<E>(total, pages, datas);
return pageDatas;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
分页pojo
import java.io.Serializable;
import java.util.List;
/**
* @Title PageDatas.java
* @Package com.pro.huanbao.common.pojo
* @author wanpu_ly
* @dade 2017年10月24日 上午8:56:05
* @version V1.0 类说明: 分页数据传递类
*/
public class PageDatas<E> implements Serializable{
/**
*
*/
private static final long serialVersionUID = 7216920941926389211L;
// 总记录数
private long total;
// 总页数
private int pages;
// 当前页数据
private List<E> datas;
public PageDatas(long total, int pages, List<E> datas) {
super();
this.total = total;
this.pages = pages;
this.datas = datas;
}
public long getTotal() {
return total;
}
public void setTotal(long total) {
this.total = total;
}
public int getPages() {
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
public List<E> getDatas() {
return datas;
}
public void setDatas(List<E> datas) {
this.datas = datas;
}
}
html
<div class="clearfix" id="page-change"></div>
<input class="get-pages" type="hidden" name="pages" value="总页数">