springboot的pagehelper失效问题解决

1.确认导入的了maven依赖

2.在查询之前设置了page的相关参数

3.PageHelper.startPage 一定要写在查询语句的上面,因为他只管,他下面的第一条查询语句

``  PageHelper.startPage(graduationMonthSearchDto.getPageNum(), graduationMonthSearchDto.getPageSize());
        List<GraduationMonthEntity> list = graduationMonthMapper.getList(graduationMonthSearchDto);
        PageInfo<GraduationMonthEntity> pageInfo = new PageInfo<>(list);
        return pageInfo;

下面两个包都要导入

在这里插入代码片

        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.2</version>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.5</version>
        </dependency>
### 解决 Spring Boot 中 PageHelper 分页查询失效的方法 #### 1. 检查 Maven 依赖配置 确保 `pom.xml` 文件中正确引入了 PageHelper 的依赖项。以下是推荐的依赖配置: ```xml <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.10</version> </dependency> ``` 此版本兼容大多数 Spring Boot 应用程序环境[^2]。 #### 2. 配置 MyBatis 和 PageHelper 插件 为了使 PageHelper 正常工作,需在应用程序配置类或属性文件中启用并配置相应的插件。通常情况下,在 `application.yml` 或者 `application.properties` 文件里添加如下配置即可: 对于 YAML 格式的配置文件 (`application.yml`): ```yaml mybatis-plus: configuration: map-underscore-to-camel-case: true pagehelper: helperDialect: mysql # 设置数据库方言 reasonable: true # 是否合理化分页参数,默认false. supportMethodsArguments: true # 支持通过Mapper接口参数来传递分页参数 ``` 如果使用 properties 格式,则应这样写入配置: ```properties mybatis.configuration.map-underscore-to-camel-case=true pagehelper.helperDialect=mysql pagehelper.reasonable=true pagehelper.supportMethodsArguments=true ``` 这些设置有助于提高分页功能的有效性和灵活性[^3]。 #### 3. Service 层代码调整 当执行 SQL 查询之前立即调用 `PageHelper.startPage()` 方法,并传入当前页面编号以及每页记录数量作为参数。注意该方法应当紧挨着查询逻辑前被调用,以确保其作用范围仅限于随后的一次查询操作。 例如,在 service 实现层可以这样做: ```java import com.github.pagehelper.PageHelper; import org.springframework.stereotype.Service; @Service public class UserService { public PageInfo<UserDTO> getUsers(int pageNum, int pageSize){ // 开始分页 PageHelper.startPage(pageNum, pageSize); List<UserDTO> userList = userMapper.selectAllUsers(); return new PageInfo<>(userList); } } ``` 这段代码展示了如何利用 PageHelper 进行分页处理,其中 `pageNum` 表示请求的具体页码,而 `pageSize` 则指定了每页展示的数据量[^4]。 #### 4. Controller 请求映射优化 确保前端发送过来的分页参数能够正确地传递给服务端控制器中的相应变量。可以通过路径参数、查询字符串等方式获取到这两个必要的分页参数——即 `pageNum` 和 `pageSize`。 比如 RESTful API 接口设计可采用如下形式: ```java @RestController @RequestMapping("/api/users") public class UserController { @Autowired private UserService userService; @GetMapping("") public ResponseEntity<?> getUserPages(@RequestParam(defaultValue="1") Integer pageNum, @RequestParam(defaultValue="10") Integer pageSize){ try{ PageInfo<UserDTO> pageInfo = userService.getUsers(pageNum, pageSize); Map<String,Object> responseMap=new HashMap<>(); responseMap.put("total", pageInfo.getTotal()); responseMap.put("data", pageInfo.getList()); return ResponseEntity.ok(responseMap); }catch(Exception e){ logger.error(e.getMessage(),e); throw new RuntimeException("Error occurred while fetching users."); } } } ``` 这里设置了默认值以防缺失必要参数的情况发生;同时捕获异常以便更好地管理错误场景下的响应行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值