Spring Boot集成pagehelper分页插件
在我们的项目中经常要用到查询的分页,这也是一个非常实用的功能,在这里我记录一下springboot集成pagehelper这个分页查询插件
1、在pom.xml中添加pagehelper依赖
在pom.xml中添加下面的代码:
<!-- pagehelper 插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
2、修改配置文件
在application.properties添加如下代码:
#pagehelper分页插件配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
3、修改Controller里面的查询方法
加上参数@RequestParam(defaultValue = "1") int pageNo, @RequestParam(defaultValue = "10") int pageSize)
,两个参数表示页号和每页大小;然后加上PageHelper.startPage(pageNo,pageSize);
表示使用这个插件。
其他代码和之前一样。
具体代码如下:
//查找所有用户
@ResponseBody
@RequestMapping("/user/findAllUsers")
public ResultInfo findAllUsers(@RequestParam(defaultValue = "1") int pageNo, @RequestParam(defaultValue = "10") int pageSize){
try{
PageHelper.startPage(pageNo,pageSize);
List<User> users = userService.findAllUsers();
if (users.size()<=0){
info.setCode(Code.NODATA);
return info;
}
HashMap<String,Object> userHashMap = new HashMap<>();
userHashMap.put("users",users);
info.setData(userHashMap);
return info;
}catch (Exception e){
e.printStackTrace();
}
info.setCode(Code.NODATA);
return info;
}
postman测试结果:
需要注意的是,分页代码PageHelper.startPage(pageNo,pageSize);只对其后的第一个查询有效。如把代码改为下面这样,添加一个查询,则第二个查询并没有分页
PageHelper.startPage(pageNo,pageSize);
List<User> users = userService.findAllUsers(); //这个查询会分页
List<User> users1 = userService.findAllUsers(); //这个查询不会分页
4、返回分页信息
有时候,我们的业务需要我们返回分页的信息,这时候我们要对controller、service、mapper里的方法的返回值做一下修改,将List改为Page,Page是com.github.pagehelper包里的类,它是java.util.ArrayList的子类。
1. 修改UserMapper
// List<User> selectAll();
Page<User> selectAll();
2. 修改UserService
//List<User> findAllUsers();
Page<User> findAllUsers();
3. 修改UserServiceImpl
// @Override
// public List<User> findAllUsers() {
// return userMapper.selectAll();
// }
@Override
public Page<User> findAllUsers() {
return userMapper.selectAll();
}
4. 用com.github.pagehelper.PageInfo类封装Page数据
关键代码:
PageInfo<User> pageInfo = new PageInfo<>(userService.findAllUsers());
完整代码如下:
//查找所有用户
@ResponseBody
@RequestMapping("/user/findAllUsers")
public ResultInfo findAllUsers(@RequestParam(defaultValue = "1") int pageNo, @RequestParam(defaultValue = "10") int pageSize){
try{
PageHelper.startPage(pageNo,pageSize);
PageInfo<User> pageInfo = new PageInfo<>(userService.findAllUsers());
if (pageInfo.getSize()<=0){
info.setCode(Code.NODATA);
return info;
}
HashMap<String,Object> userHashMap = new HashMap<>();
userHashMap.put("users",pageInfo);
info.setData(userHashMap);
return info;
}catch (Exception e){
e.printStackTrace();
}
info.setCode(Code.NODATA);
return info;
}
5. 测试
结果如下:
它返回了页面的很多信息
自此,简单的Spring Boot集成pagehelper分页插件就完成啦!