代码分页

这个分页感觉像假的分页,数据量多一的情况还是最好不要用。
整体其实就是将数据符合分页条件的放入要返回的集合中,其他的不进行处理。
哎! 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;
	}

猜你喜欢

转载自blog.csdn.net/weixin_42563880/article/details/83791350
今日推荐