前言:
在初始搭建springbooot框架的时候集成了分页功能,第一时间想到的是通过PageHelper来实现,传统的分页功能代码实现起来比较繁琐,通过PageHelper来实现大大简化了代码量从而节省了开发的时间。
1.pom.xml中导入PageHelper依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.3</version>
</dependency>
2.,mybatis-config.xml中引入PageHelper插件
<!--5.0之前的版本都是写PageHelper, 5.0之后要换成PageInterceptor-->
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
<!--设置数据库的类型-->
<property name= "dialect" value= "mysql" />
<!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
<!-- 和startPage中的pageNum效果一样-->
<property name= "offsetAsPageNum" value= "false" />
<!-- 设置为true时,使用RowBounds分页会进行count查询 -->
<property name= "rowBoundsWithCount" value= "false" />
<!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
<!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->
<property name= "pageSizeZero" value= "true" />
<!--设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果-->
<property name= "reasonable" value= "false" />
<!-- 支持通过Mapper接口参数来传递分页参数 -->
<property name= "supportMethodsArguments" value= "false" />
<!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
<property name= "returnPageInfo" value= "none" />
</plugin>
</plugins>
3.service类中添加分页查询数据的业务类
/**
* 通过分页的方式查询数据
* @return
*/
PageInfo<Customer> getCustomerByPage(int pageNum,int pageSize);
4.实现类中实现该方法通过分页的方式查询数据
@Override
public PageInfo<Customer> getCustomerByPage(int pageNum,int pageSize) {
//开始分页
PageHelper.startPage(pageNum,pageSize);
//开始查询
List<Customer> getAll = customerMapper.getAll();
//将待查询的数据放在分页中
PageInfo<Customer> pageInfo = new PageInfo<>(getAll);
return pageInfo;
}
5.定义接口,通过接口的方式实现分页功能
@Controller
@Api(value = "CustomerController")
@Slf4j
public class CustomerController {
@Autowired
private CustomerService customerService;
@RequestMapping(value = "getAllByPage",method = RequestMethod.GET)
@ApiOperation("分页测试")
@ResponseBody
public PageInfo<Customer> getAllByPage(@RequestParam int pageNum,@RequestParam int pageSize){
log.info("开始分页了......");
PageInfo<Customer> pageInfo = customerService.getCustomerByPage(pageNum,pageSize);
log.info("分页结束了......");
return pageInfo;
}
}
6.psotman测试接口功能是否正常
pageNum:显示第几页
pageSize:每页显示多少行的记录数