请选择 进入手机版 | 继续访问电脑版

SpringBoot上PageHelper的简单使用

[复制链接]
太阳神鹰 发表于 2021-1-3 12:15:50 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
文章目次



1.导入pom依赖

  1.     com.github.pagehelper    pagehelper-spring-boot-starter    1.2.5
复制代码
2.修改设置文件

application.properties
  1. #pagehelper分页插件设置pagehelper.helperDialect=mysqlpagehelper.reasonable=truepagehelper.supportMethodsArguments=truepagehelper.params=count=countSql
复制代码
这里省略dao service和Dao.xml 里的内容
就是简朴的查询全部的sql语句 以List来吸收
3.ProvinceController

  1.   @GetMapping("/provinces")    public List lists(@RequestParam(defaultValue = "1") int pageNo, @RequestParam(defaultValue = "3") int pageSize) {        PageHelper.startPage(pageNo,pageSize);        return provinceService.findAll();    }
复制代码
这里默认当前页pageNo为第一页 每页的数量pageSize为3条
返回的数据

但这种方法只是返回了对应的数据 并不是我们真正想要的
4.封装返回效果

简朴来讲 就两步
1.使用com.github.pagehelper包里的Page取代List封装返回的效果
  1. public class Page extends ArrayList implements Closeable {    private static final long serialVersionUID = 1L;    /**     * 页码,从1开始     */    private int pageNum;    /**     * 页面巨细     */    private int pageSize;    /**     * 起始行     */    private int startRow;    /**     * 末行     */    private int endRow;    /**     * 总数     */    private long total;    /**     * 总页数     */    private int pages;}
复制代码
2.使用com.github.pagehelper的PageInfo 并将Page传入 以得到更丰富的返回范例
  1. public class PageInfo extends PageSerializable {    //当前页    private int pageNum;    //每页的数量    private int pageSize;    //当前页的数量    private int size;    //由于startRow和endRow不常用,这里说个详细的用法    //可以在页面中"显示startRow到endRow 共size条数据"    //当前页面第一个元素在数据库中的行号    private int startRow;    //当前页面最后一个元素在数据库中的行号    private int endRow;    //总页数    private int pages;    //前一页    private int prePage;    //下一页    private int nextPage;    //是否为第一页    private boolean isFirstPage = false;    //是否为最后一页    private boolean isLastPage = false;    //是否有前一页    private boolean hasPreviousPage = false;    //是否有下一页    private boolean hasNextPage = false;    //导航页码数    private int navigatePages;    //所有导航页号    private int[] navigatepageNums;    //导航条上的第一页    private int navigateFirstPage;    //导航条上的最后一页    private int navigateLastPage;}
复制代码
dao
  1. public interface ProvinceDAO {         Page findAll();}
复制代码
service类似 这里省略了
  1. @GetMapping("/provinces")    public PageInfo lists(@RequestParam(defaultValue = "1") int pageNo, @RequestParam(defaultValue = "1") int pageSize) {        PageHelper.startPage(pageNo,pageSize);        PageInfo info = new PageInfo(provinceService.findAll());        return info;    }
复制代码
因为数据比力少 每页只展示一条数据
这是返回的数据

前端对应差别的参数 就可以写出悦目的页面啦
后续大概会更新…
这里模拟下百度贴吧的分页

第一页

中间页

尾页

使用的是vue前后端分离的方式 大概有点繁琐
  1.                  [url=https://www.jianchenwangluo.com/#]首页[/url]                [url=https://www.jianchenwangluo.com/#]<上一页[/url]                [url=https://www.jianchenwangluo.com/#]{{n}}[/url]                [url=https://www.jianchenwangluo.com/#]下一页">>[/url]                [url=https://www.jianchenwangluo.com/#]尾页[/url]
复制代码
大概是这个样子的 试验了下 没多大问题 当页数多的时候 他有个优化的使用 所以不消担心


来源:https://blog.csdn.net/weixin_44353507/article/details/112059562
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )