分页接口的实现

目录

一、分页接口 Page.java

二、实现page接口 Pagination.java

三、编写分页请求 PageRequest.java

四、使用分页:

五、分页的使用接口实现

六、编写SQL语句


 

一、分页接口 Page.java

/**
 * 分页接口
 * 

* Created on 2017/10/30. */ public interface Page { /**获取当前页码*/ int getPageNo(); /**获取当前页大小*/ int getPageSize(); /**获取总记录*/ int getTotalCount(); /*** 获取总页数*/ int getTotalPage(); /**获取当前页数据*/ List getData(); /** 是否有下一页*/ boolean hasNextPage(); /** 是否有上一页*/ boolean hasPreviousPage(); /**上一页*/ int getNextPage(); /**下一页*/ int getPreviousPage(); /** mysql专用,获取数据偏移量 *

* @return long mysql记录开始位置 */ long getOffset(); }

二、实现page接口 Pagination.java

/**
 * 分页对象,实现page接口
 * 

* Created by tanwei3 on 2017/10/30. */ public class Pagination implements Page, Serializable { private static final long serialVersionUID = -300961120216439654L; /** 默认第一页*/ private static final int DEFAULT_PAGE_NO = 1; /** 默认页大小*/ private static final int DEFAULT_PAGE_SIZE = 10; /**当前页码,默认第一页*/ private int pageNo = DEFAULT_PAGE_NO; /** 页大小*/ private int pageSize = DEFAULT_PAGE_SIZE; /** 总记录数*/ private int totalCount = 0; /**当前页数据*/ private List data; public Pagination() { } public Pagination(Integer pageNo, Integer pageSize) { this.pageNo = pageNo; this.pageSize = pageSize; } public void setPageNo(Integer pageNo) { this.pageNo = pageNo; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public void setTotalCount(Integer totalCount) { this.totalCount = totalCount; } public void setData(List data) { this.data = data; } @Override public long getOffset() { return (long) (getPageNo()- 1) * pageSize; } @Override public int getPageNo() { return pageNo; } @Override public int getPageSize() { return pageSize; } @Override public int getTotalCount() { return totalCount; } @Override public int getTotalPage() { if(getPageSize()>0){ return (getTotalCount() / getPageSize() + (getTotalCount() % getPageSize() == 0 ? 0 : 1)); }else{ return 0; } } @Override public List getData() { return data; } @Override public boolean hasNextPage() { return pageNo < getTotalPage(); } @Override public boolean hasPreviousPage() { return pageNo > 1; } @Override public int getNextPage() { return (this.getPageNo() >= this.getTotalPage())?this.getTotalPage():this.getPageNo() + 1; } @Override public int getPreviousPage() { return (this.getPageNo() <= 1)?1:this.getPageNo() - 1; } }

三、编写分页请求 PageRequest.java

使用方法 : 请求patamDTO extends PageRequest

/**
 * 分页查询请求,兼容以前的PageQuery
 * 

* Created by on 2017/11/23. */ public class PageRequest implements Serializable { private static final long serialVersionUID = 4701209877284326452L; /** * 当前页号(同page),从1开始 */ private int index = 1; /** * 每页大小,默认10 */ private int pageSize = 10; /** * orderBy语句 */ private String orderByClause; /** * 获取当前页号,同getPage * @return int 页号 */ public int getIndex() { return index; } /** * 设置当前页号,同setPage * @param index 当前页号 */ public void setIndex(int index) { this.index = index; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public String getOrderByClause() { return orderByClause; } public void setOrderByClause(String orderByClause) { this.orderByClause = orderByClause; } /** * mysql专用,获取数据偏移量 *

* @return long mysql记录开始位置 */ public long getOffset() { return (long) (index - 1) * pageSize; } //===============================以下方法辅助类,用于兼容老代码============================ /** * 获取当前页号,同getIndex * @return int 页号 */ public int getPage() { return index; } /** * 设置当前页号,同setIndex * @param page 当前页号 */ public void setPage(int page) { this.index = page; } /** * mysql专用,获取数据偏移量,同getOffset *

* @return long mysql记录开始位置 */ public long getStartRow() { return getOffset(); } }

 

四、使用分页:

Pagination enumTypeDetailPage(EnumTypeDetailDto enumTypeDetailDto)

五、分页的使用接口实现

    public Pagination enumTypeDetailPage(EnumTypeDetailDto enumTypeDetailDto) {

        Integer totalCount = enumTypeDetailMapper.totalCount(enumTypeDetailDto);
        logger.info("EnumTypeDetailServiceImpl-->enumTypeDetailPage,totalCount={}", totalCount);
        List enumTypeDetailDtoList = enumTypeDetailMapper.enumTypeDetailPage(enumTypeDetailDto);
        logger.info("EnumTypeDetailServiceImpl-->enumTypeDetailPage,enumTypeDetailDtoList={}", JsonUtil.toJSONString(enumTypeDetailDtoList));
        Pagination page = new Pagination();
        page.setPageSize(enumTypeDetailDto.getPageSize());
        page.setPageNo(enumTypeDetailDto.getPageNo());
        page.setTotalCount(totalCount);
        page.setData(enumTypeDetailDtoList);

        logger.info("EnumTypeDetailServiceImpl-->enumTypeDetailPage,page={}", JsonUtil.toJSONString(page));
        return page;
    }

六、编写SQL语句

    
    

 

 

你可能感兴趣的:(Java)