1:首先我们需要在pom文件中引入 pagehelper的依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>
然后基本上进行分页查询的请求都是get请求
所以在Controller层上我们都需要进行@GetMapping() 注解
2:我们需要在Service层直接调用Springboot框架提供的Pagehelpr的方法
//开始分页查询
PageHelper.startPage();
注意startPage()是开始分页查询的方法,需要两个参数,第一个参数是页码,第二个参数是每页的记录数。(一般这两个参数都封装在pojo层的对应的DTO类中)
我们要进行分页查询在service调用自己写的分页查询方法,返回值必须是一个Page<> 类型的集合
泛型根据需求文档中所给的类型进行填写。
3:在Mapper层实现分页查询
调用自己写的方法。然后写sql语句进行分页查询
注意!在进行分页查询的时候我们最好在xml文件中去写sql语句,因为我们要进行动态sql语句的填写。
下面是案例
<mapper namespace="com.sky.mapper.EmployeeMapper">
<select id="pageQuery" resultType="com.sky.entity.Employee">
select *from employee
<where>
<if test="name !=null and name !=''">
and name like concat('%',#{name},'%')
</if>
</where>
order by create_time desc
</select>
</mapper>
resultType是泛型的全类名,id就是咱们写的方法名
pagehelper会自动的进行sql语句的拼接 省去了limit()这一步。
4:完善我们在Service层的代码
我们分页查询接口的最终返回值因该是统一响应结果pageResult类(自己定义的) 返回给前端的。其中这个类需要两个参数,一个是查询数目的总记录数,一个是当前页数据集合。
这两个参数我们都可以从调用Pagehelper为我们提供的Page类获取
//总记录数
long total = page.getTotal();
//当前页数据集合
List<Employee> records = page.getResult();
//返回结果必须是PageResult里面俩参数分别对应 得到的page里面的俩方法的结果
return new PageResult(total,records);
以下是Controller 层分页查询的完整代码
//分页查询
@Override
public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) {
//开始分页查询
PageHelper.startPage(employeePageQueryDTO.getPage(),employeePageQueryDTO.getPageSize());
Page<Employee>page=employeeMapper.pageQuery(employeePageQueryDTO);
long total = page.getTotal();
List<Employee> records = page.getResult();
//返回结果必须是PageResult里面俩参数分别对应 得到的page里面的俩方法的结果
return new PageResult(total,records);
}
感谢大佬们的阅读。