SpringBoot maven项目使用PageHelper分页插件 图文教程

本文详细介绍了如何在SpringBoot项目中使用PageHelper分页插件,包括在pom.xml添加依赖,配置application.properties,以及创建PageUtils类进行分页逻辑处理,旨在帮助开发者实现简单高效的分页功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步:pom.xml中添加分页<!-- pageHelper启动器 --> 和pageHelper依赖
        <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.12</version>
        </dependency>插件的启动器

<!-- 分页插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.0</version>
        </dependency>

第二步:修改application.properties文件,在当前文件中添加分页启动器属性

#pagehelper
#指定数据库方言
pagehelper.helperDialect=mysql
#启用分页的合理性
pagehelper.reasonable=true
#支持方法传参
pagehelper.supportMethodsArguments=true

第三步:代码实现

使用PageUtils的好处就是jsp页面取值非常简单  只需要写${fenye}  就可以正常实现功能了

 

PageUtils代码如下  

import javax.servlet.http.HttpServletRequest;

public class PageUtils {
    // 当前页
    private int cpage;
    // 总页数
    private int totalPage;
    // 总条数
    private int count;
    // 分页单位
    private int pageSize;
    // 上一页
    private int prevPage;
    // 下一页
    private int nextPage;
    // 起始位置
    private int startPage;

    public PageUtils(int cpage, int count, int pageSize, String url, HttpServletRequest request) {
        this.count = count;
        this.pageSize = pageSize;
        // 处理总页数
        this.initTotalPage();
        // 处理当前页
        this.initCpage(cpage);
        // 处理上一页
        this.initPrevPage();
        // 处理下一页
        this.initnextPage();
        // 处理起始位置
        this.initStartPage();
        // 把路径封装
        this.initFenye(request, url);

    }

    
    //把路径封装
    private void initFenye(HttpServletRequest request, String url) {
        // 如果url中有? 后面追加条件时用& url中没有? 后面追加?
        String flag = url.indexOf("?") != -1 ? "&" : "?";
        String fenye = "当前" + cpage + "/" + totalPage + "页/共" + count + "条数据<a href='" + url + flag
                + "cpage=1'> 首页&nbsp;  </a><a href='" + url + flag + "cpage=" + prevPage + "'> 上一页 &nbsp; </a><a href='" + url + flag
                + "cpage=" + nextPage + "'> 下一页&nbsp;  </a><a href='" + url + flag + "cpage=" + totalPage + "'> 尾页</a>";

        request.setAttribute("fenye", fenye);
    }

    // 处理起始位置
    private void initStartPage() {
        // 计算limit后的第一个参数 (当前页-1)*pageSize
        this.startPage = (cpage - 1) * pageSize;

    }

    // 处理下一页
    private void initnextPage() {
        if (cpage >= totalPage) {
            this.nextPage = totalPage;
        } else {
            this.nextPage = cpage + 1;
        }

    }

    // 处理上一页
    private void initPrevPage() {
        // <a href="list?cpage=${cpage<=1?1:cpage-1 }&name=${name }">上一页</a>
        if (cpage <= 1) {
            this.prevPage = 1;
        } else {
            this.prevPage = cpage - 1;
        }
    }

    // 处理总页数
    private void initTotalPage() {
        // 计算总页数 ==总条数/pageSize 有余数+1
        this.totalPage = (count / pageSize) + (count % pageSize == 0 ? 0 : 1);

    }

    // 处理当前页
    private void initCpage(int cpage2) {
        if (cpage2 >= totalPage) {// 如果当前页大一等于最后一页 当前页=最后一页
            this.cpage = totalPage;
        } else if (cpage2 <= 1) {// 如果当前页小一等于1 当前页=1
            this.cpage = 1;
        } else {
            this.cpage = cpage2;
        }
    }

    public int getCpage() {
        return cpage;
    }

    public void setCpage(int cpage) {
        this.cpage = cpage;
    }

    public int getTotalPage() {
        return totalPage;
    }

    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getPrevPage() {
        return prevPage;
    }

    public void setPrevPage(int prevPage) {
        this.prevPage = prevPage;
    }

    public int getNextPage() {
        return nextPage;
    }

    public void setNextPage(int nextPage) {
        this.nextPage = nextPage;
    }

    public int getStartPage() {
        return startPage;
    }

    public void setStartPage(int startPage) {
        this.startPage = startPage;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值