springboot+mybatis分页插件pageHelper的配置与使用

来源:互联网 发布:if you中文网络歌手 编辑:程序博客网 时间:2024/06/05 11:59

1、在pom文件里面加入pageHelper分页jar包依赖:

<dependency>   <groupId>com.github.pagehelper</groupId>   <artifactId>pagehelper</artifactId>   <version>4.2.1</version></dependency>2、在mybatis配置文件中加入pageHelper分页插件:
//配置分页插件,详情请查阅官方文档PageHelper pageHelper = new PageHelper();Properties properties = new Properties();properties.setProperty("pageSizeZero", "true");//分页尺寸为0时查询所有纪录不再执行分页properties.setProperty("reasonable", "true");//页码<=0 查询第一页,页码>=总页数查询最后一页properties.setProperty("supportMethodsArguments", "true");//支持通过 Mapper 接口参数来传递分页参数pageHelper.setProperties(properties);//添加插件sqlSessionFactoryBean.setPlugins(new Interceptor[]{pageHelper});


3、业务层代码:

//pageHelper组件进行分页Page<CloudProductBO> page = PageHelper.offsetPage(pageNo, pageSize);cloudProductDao.queryProductByCondition(param);List<CloudProductBO> result = page.getResult();PageInfo pageInfo = new PageInfo(result);return pageInfo;
pageHelper类下面的SQL语句进行自动分页,page.getResult()的结果就是分页查询的结果,pageInfo是分页组件,直接返还给前台,里面有分页插件,下面就是pageInfo类。

public class PageInfo<T> implements Serializable {    private static final long serialVersionUID = 1L;    private int pageNum;    private int pageSize;    private int size;    private String orderBy;    private int startRow;    private int endRow;    private long total;    private int pages;    private List<T> list;    private int prePage;    private int nextPage;    private boolean isFirstPage;    private boolean isLastPage;    private boolean hasPreviousPage;    private boolean hasNextPage;    private int navigatePages;    private int[] navigatepageNums;    private int navigateFirstPage;    private int navigateLastPage;    public PageInfo() {        this.isFirstPage = false;        this.isLastPage = false;        this.hasPreviousPage = false;        this.hasNextPage = false;    }    public PageInfo(List<T> list) {        this(list, 8);    }    public PageInfo(List<T> list, int navigatePages) {        this.isFirstPage = false;        this.isLastPage = false;        this.hasPreviousPage = false;        this.hasNextPage = false;        if(list instanceof Page) {            Page page = (Page)list;            this.pageNum = page.getPageNum();            this.pageSize = page.getPageSize();            this.orderBy = page.getOrderBy();            this.pages = page.getPages();            this.list = page;            this.size = page.size();            this.total = page.getTotal();            if(this.size == 0) {                this.startRow = 0;                this.endRow = 0;            } else {                this.startRow = page.getStartRow() + 1;                this.endRow = this.startRow - 1 + this.size;            }        } else if(list instanceof Collection) {            this.pageNum = 1;            this.pageSize = list.size();            this.pages = 1;            this.list = list;            this.size = list.size();            this.total = (long)list.size();            this.startRow = 0;            this.endRow = list.size() > 0?list.size() - 1:0;        }        if(list instanceof Collection) {            this.navigatePages = navigatePages;            this.calcNavigatepageNums();            this.calcPage();            this.judgePageBoudary();        }    }    private void calcNavigatepageNums() {        int startNum;        if(this.pages <= this.navigatePages) {            this.navigatepageNums = new int[this.pages];            for(startNum = 0; startNum < this.pages; ++startNum) {                this.navigatepageNums[startNum] = startNum + 1;            }        } else {            this.navigatepageNums = new int[this.navigatePages];            startNum = this.pageNum - this.navigatePages / 2;            int endNum = this.pageNum + this.navigatePages / 2;            int i;            if(startNum < 1) {                startNum = 1;                for(i = 0; i < this.navigatePages; ++i) {                    this.navigatepageNums[i] = startNum++;                }            } else if(endNum > this.pages) {                endNum = this.pages;                for(i = this.navigatePages - 1; i >= 0; --i) {                    this.navigatepageNums[i] = endNum--;                }            } else {                for(i = 0; i < this.navigatePages; ++i) {                    this.navigatepageNums[i] = startNum++;                }            }        }    }    private void calcPage() {        if(this.navigatepageNums != null && this.navigatepageNums.length > 0) {            this.navigateFirstPage = this.navigatepageNums[0];            this.navigateLastPage = this.navigatepageNums[this.navigatepageNums.length - 1];            if(this.pageNum > 1) {                this.prePage = this.pageNum - 1;            }            if(this.pageNum < this.pages) {                this.nextPage = this.pageNum + 1;            }        }    }    private void judgePageBoudary() {        this.isFirstPage = this.pageNum == 1;        this.isLastPage = this.pageNum == this.pages;        this.hasPreviousPage = this.pageNum > 1;        this.hasNextPage = this.pageNum < this.pages;    }    public int getPageNum() {        return this.pageNum;    }    public void setPageNum(int pageNum) {        this.pageNum = pageNum;    }    public int getPageSize() {        return this.pageSize;    }    public void setPageSize(int pageSize) {        this.pageSize = pageSize;    }    public int getSize() {        return this.size;    }    public void setSize(int size) {        this.size = size;    }    public String getOrderBy() {        return this.orderBy;    }    public void setOrderBy(String orderBy) {        this.orderBy = orderBy;    }    public int getStartRow() {        return this.startRow;    }    public void setStartRow(int startRow) {        this.startRow = startRow;    }    public int getEndRow() {        return this.endRow;    }    public void setEndRow(int endRow) {        this.endRow = endRow;    }    public long getTotal() {        return this.total;    }    public void setTotal(long total) {        this.total = total;    }    public int getPages() {        return this.pages;    }    public void setPages(int pages) {        this.pages = pages;    }    public List<T> getList() {        return this.list;    }    public void setList(List<T> list) {        this.list = list;    }    /** @deprecated */    @Deprecated    public int getFirstPage() {        return this.navigateFirstPage;    }    /** @deprecated */    @Deprecated    public void setFirstPage(int firstPage) {        this.navigateFirstPage = firstPage;    }    public int getPrePage() {        return this.prePage;    }    public void setPrePage(int prePage) {        this.prePage = prePage;    }    public int getNextPage() {        return this.nextPage;    }    public void setNextPage(int nextPage) {        this.nextPage = nextPage;    }    /** @deprecated */    @Deprecated    public int getLastPage() {        return this.navigateLastPage;    }    /** @deprecated */    @Deprecated    public void setLastPage(int lastPage) {        this.navigateLastPage = lastPage;    }    public boolean isIsFirstPage() {        return this.isFirstPage;    }    public void setIsFirstPage(boolean isFirstPage) {        this.isFirstPage = isFirstPage;    }    public boolean isIsLastPage() {        return this.isLastPage;    }    public void setIsLastPage(boolean isLastPage) {        this.isLastPage = isLastPage;    }    public boolean isHasPreviousPage() {        return this.hasPreviousPage;    }    public void setHasPreviousPage(boolean hasPreviousPage) {        this.hasPreviousPage = hasPreviousPage;    }    public boolean isHasNextPage() {        return this.hasNextPage;    }    public void setHasNextPage(boolean hasNextPage) {        this.hasNextPage = hasNextPage;    }    public int getNavigatePages() {        return this.navigatePages;    }    public void setNavigatePages(int navigatePages) {        this.navigatePages = navigatePages;    }    public int[] getNavigatepageNums() {        return this.navigatepageNums;    }    public void setNavigatepageNums(int[] navigatepageNums) {        this.navigatepageNums = navigatepageNums;    }    public int getNavigateFirstPage() {        return this.navigateFirstPage;    }    public int getNavigateLastPage() {        return this.navigateLastPage;    }    public void setNavigateFirstPage(int navigateFirstPage) {        this.navigateFirstPage = navigateFirstPage;    }    public void setNavigateLastPage(int navigateLastPage) {        this.navigateLastPage = navigateLastPage;    }    public String toString() {        StringBuffer sb = new StringBuffer("PageInfo{");        sb.append("pageNum=").append(this.pageNum);        sb.append(", pageSize=").append(this.pageSize);        sb.append(", size=").append(this.size);        sb.append(", startRow=").append(this.startRow);        sb.append(", endRow=").append(this.endRow);        sb.append(", total=").append(this.total);        sb.append(", pages=").append(this.pages);        sb.append(", list=").append(this.list);        sb.append(", prePage=").append(this.prePage);        sb.append(", nextPage=").append(this.nextPage);        sb.append(", isFirstPage=").append(this.isFirstPage);        sb.append(", isLastPage=").append(this.isLastPage);        sb.append(", hasPreviousPage=").append(this.hasPreviousPage);        sb.append(", hasNextPage=").append(this.hasNextPage);        sb.append(", navigatePages=").append(this.navigatePages);        sb.append(", navigateFirstPage").append(this.navigateFirstPage);        sb.append(", navigateLastPage").append(this.navigateLastPage);        sb.append(", navigatepageNums=");        if(this.navigatepageNums == null) {            sb.append("null");        } else {            sb.append('[');            for(int i = 0; i < this.navigatepageNums.length; ++i) {                sb.append(i == 0?"":", ").append(this.navigatepageNums[i]);            }            sb.append(']');        }        sb.append('}');        return sb.toString();    }}
4、持久层SQL:

跟普通查询一样,不需要加入页数参数,pageHelper分页插件自动进行分页,至于原理能力有限暂时解释不了。

5、加到服务器中的jar包
因为我的本地有maven项目管理工具,服务器中没有maven这样的工具,还需要加入这个jar包才能形成依赖,才可以进行使用。