这个分页感觉像假的分页,数据量多一的情况还是最好不要用。
整体其实就是将数据符合分页条件的放入要返回的集合中,其他的不进行处理。
哎! 2019-02-28 新更新一下正常分页功能的写法。
首先贴一个分页类的代码
package net.ninehkj.logistics.util;
import java.io.Serializable;
import java.util.List;
import org.apache.poi.ss.formula.functions.T;
@SuppressWarnings("hiding")
public class Pagers<T> implements Serializable{
/**
*
*/
private static final long serialVersionUID = -6211010175093263237L;
private int page=1;//当前页
private int pageSize=5;//每页显示几条数据
private int totalRecord;//总记录数
private int totalPage;//总页数
private int from=0;//从哪条数据开始查询
private List<T> list;
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
public Pagers() {
}
public int getPage() {
return page;
}
public void setPage(int page) {
page=page>0?page:1;
this.page = page;
this.from=(page-1)*pageSize;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
this.from=(page-1)*pageSize;
}
public int getTotalRecord() {
return totalRecord;
}
public void setTotalRecord(int totalRecord) {
this.totalRecord = totalRecord;
totalPage=(totalRecord%pageSize==0)?(totalRecord/pageSize):(totalRecord/pageSize+1);
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getFrom() {
return from;
}
public void setFrom(int from) {
this.from = from;
}
}
下面开始分页代码:
private Pagers<QuestionMess> getQuestionMessPage(JLogQuestion jLogQuestion, Map<Integer, QuestionMess> map) {
//这是将前台获得的分页相关数据放入创建的分页对象中
Pagers<QuestionMess> pagers = new Pagers<QuestionMess>();
pagers.setPageSize(jLogQuestion.getPageSize());
pagers.setPage(jLogQuestion.getPage());
pagers.setTotalRecord(map.size());
if(pagers.getPage() > pagers.getTotalPage())
pagers.setPage(pagers.getTotalPage());
List<QuestionMess> resultList = new LinkedList<>();
Integer temporary = 0;
for (Integer key : map.keySet()) {//这里是遍历数据的集合,进行分页
temporary += 1;
if(temporary > pagers.getFrom()
&& temporary <= pagers.getFrom()+pagers.getPageSize()) {
resultList.add(map.get(key));
if(temporary > jLogQuestion.getPage()*jLogQuestion.getPageSize()+1)
break;
}
}
pagers.setList(resultList);
return pagers;
}
------------------------------------------------------正常的分页-------------------------------------------------------------------------------------
第一种写法:
/**
* @param orderMess 这是接收的参数包括(在第几页开始查询,每页几条数据)
* @return
* @throws CcException
* @throws ParseException
*/
@Override
public Pagers<Delivery> findDeliverList(OrderMessage orderMess) throws CcException, ParseException{
Pagers<Delivery> pagers = new Pagers<Delivery>(); //创建分页对象
if(null != orderMess.getOderNumber())
orderMess.setOderNumber(orderMess.getOderNumber().trim());
int count = orderManageDao.findDeliverListCount(orderMess); //首先根据搜索条件查询出总条数
pagers.setPage(orderMess.getPage()); //将前端传递的当前页放入你创建的分页对象当前页参数中
pagers.setPageSize(orderMess.getPageSize()); //放入每页几条数据
pagers.setTotalRecord(count); //放入总条数
if(pagers.getPage()>pagers.getTotalPage()) //如果当前页大于总页数
pagers.setPage(pagers.getTotalPage()); //将总页数设置为当前页
pagers.setPageSize(orderMess.getPageSize());
List<Delivery> deliveryList = orderManageDao.findDeliverList(orderMess,pagers);
pagers.setList(deliveryList);
return pagers;
}
下面第二种写法使用MyBatis分页插件:
首先附上分页类
/**
* 分页bean
*/
import java.util.List;
public class PageBean<T> {
// 当前页
private Integer currentPage = 1;
// 每页显示的总条数
private Integer pageSize = 10;
// 总条数
private Integer totalNum;
// 是否有下一页
private Integer isMore;
// 总页数
private Integer totalPage;
// 开始索引
private Integer startIndex;
// 分页结果
private List<T> items;
public PageBean() {
super();
}
public PageBean(Integer currentPage, Integer pageSize, Integer totalNum) {
super();
this.currentPage = currentPage;
this.pageSize = pageSize;
this.totalNum = totalNum;
this.totalPage = (this.totalNum+this.pageSize-1)/this.pageSize;
this.startIndex = (this.currentPage-1)*this.pageSize;
this.isMore = this.currentPage >= this.totalPage?0:1;
}
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getTotalNum() {
return totalNum;
}
public void setTotalNum(Integer totalNum) {
this.totalNum = totalNum;
}
public Integer getIsMore() {
return isMore;
}
public void setIsMore(Integer isMore) {
this.isMore = isMore;
}
public Integer getTotalPage() {
return totalPage;
}
public void setTotalPage(Integer totalPage) {
this.totalPage = totalPage;
}
public Integer getStartIndex() {
return startIndex;
}
public void setStartIndex(Integer startIndex) {
this.startIndex = startIndex;
}
public List<T> getItems() {
return items;
}
public void setItems(List<T> items) {
this.items = items;
}
}
现在是MyBatis分页插件的使用:
@Override
public PageBean<OrderVo> orderLists(OrderParam params)throws CcException {
if(params.getPage()<1||params.getSize()<1)
throw new CcException("参数信息有误!");
if(Constants.BASIC_ENABLE.equals(params.getFlag()))//已完成 1
params.setCode(Constants.ORDER_STATUS_FINUSH);
else if(Constants.BASIC_DISABLE.equals(params.getFlag())) // 未完成 0
params.setCode(Constants.ORDER_STATUS_ON);
PageHelper.startPage(params.getPage(),params.getSize()); //在这里开始就是使用mybatis分页插件了,自行copy
Page<OrderData> listp=(Page<OrderData>)orderTableDao.findCleanerAll(params);
PageBean<OrderVo> pageData = new PageBean<OrderVo>(params.getPage(),params.getSize(),(int)listp.getTotal());
pageData.setItems(this.getItems(listp));
return pageData;
}