SpringBoot 2.x整合pagehelper实现查询分页功能

一、项目环境

  • spring boot 2.3.0
  • idea 2019.2.3
  • pagehelper 1.3.0

二、引入依赖

        <dependency>
            <groupId>com.github.pagehelpergroupId>
            <artifactId>pagehelper-spring-boot-starterartifactId>
            <version>1.3.0version>
        dependency>

三、添加配置

#修改application.yml,添加以下内容。

#分页设置
pagehelper:
  helper-dialect: mysql
  reasonable: true
  support-methods-arguments: true
  params: count=countSql

四、分页代码

    /**
     * @param model 集合
     * @param pageNum 查询页面的起始页码,默认第1页为起始页
     * @param pageSize 查询页面的条目数,默认每页4条数据
     * @return 前端页面
     */    
	@RequestMapping("/list")
    public String list(Model model,
                       @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                       @RequestParam(value = "pageSize", defaultValue = "4") int pageSize
    ) {
        //分页功能
        PageHelper.startPage(pageNum, pageSize);
        List<Goods> goodsList = goodsService.findAll();
        PageInfo<Goods> pageInfo = new PageInfo<>(goodsList);
        model.addAttribute("pageInfo", pageInfo);
        return "admin/goods_list";
    }

五、页面设置

    <div class="goods-panel">
        <table class="goods-list">
            <tr class="goods-title">
                <th>商品编号th>
                <th>图片th>
                <th>名称th>
                <th>价格th>
                <th>产地th>
                <th>生产日期th>
                <th>分类th>
                <th>操作th>
            tr>
            <th:block th:each="g:${pageInfo.list}">
                <tr>
                    <td th:text="${g.goodsId}">td>
                    <td>
                        <img th:src="${g.picture}" width="80" height="80"/>
                    td>
                    <td th:text="${g.goodsName}">td>
                    <td th:text="${g.goodsPrice}">td>
                    <td th:text="${g.produceAddress}">td>
                    <td th:text="${#dates.format(g.produceDate,'yyyy-MM-dd')}">td>
                    <td th:text="${g.category.categoryName}">td>
                    <td>
                        <a th:href="@{/admin/goods/update_show(goodsId=${g.goodsId})}">修改a>
                        <a th:href="@{/admin/goods/delete(goodsId=${g.goodsId})}">删除a>
                    td>
                tr>
            th:block>
        table>
        <div class="goods-page">
            <p><span th:text="${pageInfo.pageNum}">span> 页,共 <span th:text="${pageInfo.pages}">span> 页,总计 <span
                    th:text="${pageInfo.total}">span> 条记录p>
            <a th:href="@{/admin/goods/list}">首页a>
            <a th:href="@{/admin/goods/list(pageNum=${pageInfo.hasPreviousPage}?${pageInfo.prePage}:1)}">上一页a>
            <a th:href="@{/admin/goods/list(pageNum=${pageInfo.hasNextPage}?${pageInfo.nextPage}:${pageInfo.pages})}">下一页a>
            <a th:href="@{/admin/goods/list(pageNum=${pageInfo.pages})}">尾页a>
        div>
    div>

六、效果展示

SpringBoot 2.x整合pagehelper实现查询分页功能_第1张图片

附:PageInfo封装页面信息,返回给前端页面,下表为一些常用参数说明

参数 说明
PageInfo.list 结果集
PageInfo.pageNum 当前页码
PageInfo.pageSize 当前页面显示的数据条目
PageInfo.pages 总页数
PageInfo.total 数据的总条目数
PageInfo.prePage 上一页
PageInfo.nextPage 下一页
PageInfo.isFirstPage 是否为第一页
PageInfo.isLastPage 是否为最后一页
PageInfo.hasPreviousPage 是否有上一页
PageHelper.hasNextPage 是否有下一页

你可能感兴趣的:(spring,boot,vue.js)