分页查询,我们使用pagehelper分页插件,在SpringBoot项目中,我们要使用 pagehelper作为分页插件,我需要导入pagehelper插件的启动器依赖,直接导入pagehelper依赖会报错。
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
-
在我们导入好依赖后,在开始进行分页查询之前,我们需要一个PageResult的工具类
import java.io.Serializable; import java.util.List; public class PageResult implements Serializable { private Long total;//总记录数 private List rows;//当前页结果 public PageResult(Long total, List rows) { super(); this.total = total; this.rows = rows; } public Long getTotal() { return total; } public void setTotal(Long total) { this.total = total; } public List getRows() { return rows; } public void setRows(List rows) { this.rows = rows; } }
【把我们的工具类放到我们的entity包下】
-
这时我们还需要一个QueryPageBean的工具类
package com.sanchi.springboot_mybatis.pojo; import java.io.Serializable; public class QueryPageBean implements Serializable { private Integer currentPage;//页码 private Integer pageSize;//每页记录数 private String queryString;//查询条件 public Integer getCurrentPage() { return currentPage; } public void setCurrentPage(Integer currentPage) { this.currentPage = currentPage; } public Integer getPageSize() { return pageSize; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public String getQueryString() { return queryString; } public void setQueryString(String queryString) { this.queryString = queryString; } }
-
导入好我们的工具类后,我们开始进行分页查询,我们的分页查询,需要前端给我们传递俩个参数,分别是:当前页、每页数据量。这时候我们开始写接口。
public Result findAll(Integer currentPage, Integer pageSize) { return null; }
-
简单的接口写好后,我们开始使用pagehelper进行分页查询。
public Result findAll(Integer currentPage, Integer pageSize) { //首先创建QueryPageBean QueryPageBean queryPageBean = new QueryPageBean(); //创建好Bean之后,向我们的PageBean里放置前端向我们传递的参数,当前页和每页的数据量 queryPageBean.setCurrentPage(currentPage); queryPageBean.setPageSize(pageSize); //将QueryPageBean传入业务层的方法进行查询,使用我们的工具类接收数据 PageResult pageResult = service.findAll(queryPageBean); return null; }
【我们的controller写好后,开始编写业务层的代码】
-
在我们的service层开始写方法
public PageResult findAll(QueryPageBean queryPageBean) { //启动PageHelper,放入PageHelper需要的参数,使用Page接收数据 Page page = PageHelper.startPage(queryPageBean.getCurrentPage(), queryPageBean.getPageSize()); //调用mapper的查询方法,使用List<Student>进行数据接收 List<Student> students = mapper.findAll(); //我们方法的返回值是PageResult,所以我们使用PageResult进行返回,返回到这个方法的调用者 return new PageResult(page.getTotal(), students); }
【这时,我们service的代码就写好了】
-
在我们的dao层开始写我们方法
<select id="findAll" resultType="com.sanchi.springboot_mybatis.pojo.Student"> select * from student </select>
【我们使用的是xml的方式进行sql查询的,所以在dao层写好接口后,在我们xml文件中写我们的sql查询】
我们已经使用了pagehelper插件作为我们的分页查询插件了,所以在sql语句这里,我们不需要做多余的操作,直接把我们需要的数据全部查询出来就ok了,pagehelper会帮我们对我们查询出来的数据进行分页操作的
-
dao层和service层我们都写好了,但是在controller层我们返回了null,接下来我们继续完成我们controller
@RequestMapping("/findAll") public Result findAll(Integer currentPage, Integer pageSize) { QueryPageBean queryPageBean = new QueryPageBean(); queryPageBean.setCurrentPage(currentPage); queryPageBean.setPageSize(pageSize); PageResult pageResult = service.findAll(queryPageBean); //我们controller返回是使用我们的Result工具类进行返回的,所以把我们使用pagehelper查询到的数据放进去,进行返回就ok了 return new Result(true, MessageConstant.QUERY_STUDENT_SUCCESS, pageResult); }
使用工具类是为了方便我们对代码进行管理,防止代码冗余