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分页插件就完成啦!

猜你喜欢

转载自blog.csdn.net/weixin_43520670/article/details/112587588