博客系统-文章分页pagehelper的使用

首先添加pom依赖pom
可以基于前端ui框架先设计出分页效果比如zui前端框架
例如设计效果为在这里插入图片描述其中的四个框就是对页数的获取,第一页的页数pageNo=1,以此类推,尾页页数就是文章总条数
接着是文章service层,方法queryPageList就是查询全部文章,先在mapper中写好查询全部文章的mapper方法,待会ArticleService实现类需要调用文章mapper中的查询全部文章方法,并封装进PageInfo

service
接着就是impl实现类。
其中有两个参数(Integer pageNum,Integer pageSize)第一个参数代表当前页数,第二个参数代表一页限制文章条数,我们在controller中调用时,第一个参数由前端传入,第二个每页限制条数由controller中调用方法自定义传入,例如,一页五条数据那么pageSize就赋值为5。
implImpl代码

@Autowired
    private ArticleMapper articleMapper;

    @Override
    public PageInfo<Article> queryPageList(Integer pageNum, Integer pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        List<Article> articleList = articleMapper.queryAllArticles();
        PageInfo<Article> pageInfo = new PageInfo<>(articleList);
        return pageInfo;
    }

我们查看PageInfo源码得知,其封装类如下,并把全部文章封装进pageInfo
在这里插入图片描述
之后,当调用时,此插件会自动生成limit查询sql,实现分页查询功能

接着就是controller调用并传参数,pageNo为前端传如参数,request就行

在这里插入图片描述

在这里插入图片描述

Integer pageNo = request.getParameter("pageNo") == null ? 1 : Integer.parseInt(request.getParameter("pageNo"));
        System.out.println("pageNo = " + pageNo);
        PageInfo<Article> pageInfo = articleService.queryPageList(pageNo, 5);//自定义每页文章条数
        model.addAttribute("articleList", pageInfo.getList());
        model.addAttribute("pages", pageInfo.getPages());//总页数
        model.addAttribute("pageNo", pageInfo.getPageNum());//当前页
        model.addAttribute("pageSize", pageInfo.getPageSize());//每页限制的的数据条数

model传入前端数据,model中的articleList就是limit查询语句限定查询的结果
在这里插入图片描述
然后就是下图的实现在这里插入图片描述
我这里用了开通说的zui前端框架,用了比较笨的前端判断的方法来实现隐藏,active,

<div align="center">
    <ul class="pager">

        <li class="previous" th:if="${pageNo}!=1"><a th:href="@{/article/allarticle(pageNo=1)}">首页</a></li>
        <li class="previous disabled" th:if="${pageNo}==1"><a th:href="@{/article/allarticle(pageNo=1)}">首页</a></li>
        <li th:if="${pageNo}!=1"><a th:href="@{/article/allarticle(pageNo= ${pageNo}-1)}"><i class="icon icon-chevron-left"></i></a></li>
        <li class="previous disabled" th:if="${pageNo}==1"><a th:href="@{/article/allarticle(pageNo= ${pageNo}-1)}"><i class="icon icon-chevron-left"></i></a></li>
<!--在此添加指定页数,可探索zui-->
        <li th:if="${pageNo}!=${pages}"><a th:href="@{/article/allarticle(pageNo= ${pageNo}+1)}"><i class="icon icon-chevron-right"></i></a></li>
        <li class="next disabled" th:if="${pageNo}==${pages}"><a th:href="@{/article/allarticle(pageNo= ${pageNo}+1)}"><i class="icon icon-chevron-right"></i></a>
        </li>
        <li class="next" th:if="${pageNo}!=${pages}"><a th:href="@{/article/allarticle(pageNo=${pages})}">尾页</a></li>
        <li class="next disabled" th:if="${pageNo}==${pages}"><a th:href="@{/article/allarticle(pageNo=${pages})}">尾页</a></li>

    </ul>
</div>
<div align="center"><span id="pageNo" th:text="''+${pageNo}"></span>
    <span id="pages" th:text="'/'+${pages}+''"></span>

</div>

最后实现效果
在这里插入图片描述
项目地址myvlog

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roydon_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值