在spring-boot中使用pageHelper插件

1,040 阅读1分钟

在spring-boot中使用pageHelper插件

添加依赖

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.5</version>

</dependency>

注意:如果是mvc项目则是下面这个依赖

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

如果在spring-boot项目中引入spring-mvc项目则会引发错误

分页方法

@RequestMapping("/findAll")
//@RequestParam(required = true,defaultValue = "1")  如果前台页面没有传入page的值,那么采用默认值1
public String findAll(@RequestParam(required = true,defaultValue = "1") Integer page, Model model){
    //开始分页
    PageHelper.startPage(page,10);
    List<Car> carList = autoService.findAll();
    PageInfo<Car> pageInfo = new PageInfo<>(carList);
    model.addAttribute("list",carList);
    //将分页信息存入model对象,以便前台对象使用
    model.addAttribute("page",pageInfo);
    return "list";
}

前台页面

<p>第${page.pageNum}页</p>
<p>共${page.pages}页</p>
<div><a href="findAll?page=${page.pages-(page.pages-1)}" class="layui-btn">首页</a></div>
<div><a href="findAll?page=${page.prePage}" class="layui-btn">上一页</a></div>
<div><a href="findAll?page=${page.nextPage}" class="layui-btn">下一页</a></div>
<div><a href="findAll?page=${page.pages}" class="layui-btn">尾页</a></div>

常用的PageInfo对象方法

pages:总页数

pageNum:当前页

prePage:上一页

nextPage:下一页

firstPage:第一页

lastPage:最后一页

但是需要注意的是firstPage是获取到导航条上的第一页,lastPage是获取到导航条上的最后一页,并不是真正的最后一页

通过观察源码:

@Deprecated
// firstPage就是1, 此函数获取的是导航条上的第一页, 容易产生歧义
public int getFirstPage() {
    return navigateFirstPage;
}
 @Deprecated
    // 请用getPages()来获取最后一页, 此函数获取的是导航条上的最后一页, 容易产生歧义.
    public int getLastPage() {
        return navigateLastPage;
    }

解决办法:

通过前台代码观察可以得出点击最后一页的按钮是吧page="最后一页的值",传递给后台,后台再去查询

所以最后一页也可以写成pages

第一页楠就是page=1,可以直接赋值给他,也可以这样写page.pages-(page.pages-1) 总页数减去总页数减一的差

分页原理

分页原理在

高级查询(三):分页查询:

有介绍 具体可以查看这篇文章

分页原理类似spring的aop 拦截到sql语句进行增强

例如 sql:select * from tableName

增强后:sql : select * from tableName limit ?,?