pagehelper分页查询springboot
时间: 2025-04-18 08:49:47 浏览: 23
### 如何在 Spring Boot 中使用 PageHelper 实现分页查询
#### 配置 PageHelper 插件
为了使 PageHelper 正常工作,在 `application.properties` 或者 `application.yml` 文件中需要进行相应的配置[^2]:
对于 `application.properties`:
```properties
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
pagehelper.params=count=countSql
```
对于 `application.yml`:
```yaml
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
params: count=countSql
```
这些设置指定了 MySQL 作为数据库方言,并启用了合理的页面调整以及支持通过方法参数传递分页信息。
#### 添加 Maven 依赖项
确保项目的 pom.xml 文件包含了必要的依赖项以引入 PageHelper 和 MyBatis 支持。通常情况下,这看起来像这样[^1]:
```xml
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper.version}</version>
</dependency>
<!-- 如果还没有MyBatis的核心包 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.version}</version>
</dependency>
```
#### 编写服务层逻辑
一旦完成了上述准备工作,则可以在业务逻辑的服务类里轻松地应用分页功能。下面给出的是一个简单的例子,展示了如何利用 PageHelper 来执行带有限制条件的用户列表分页检索操作[^3]:
```java
import com.github.pagehelper.PageHelper;
import org.springframework.stereotype.Service;
@Service
public class UserService {
private final UserMapper userMapper; // 假设已经注入了一个映射器实例
public PageInfo<UserDTO> getUsers(int pageNum, int pageSize){
// 开始分页
PageHelper.startPage(pageNum, pageSize);
List<UserDTO> userList = userMapper.selectAllUsers();
// 使用PageInfo封装返回结果集
return new PageInfo<>(userList);
}
}
```
在这个案例中,调用 `startPage()` 方法之前定义了要获取的具体页码 (`pageNum`) 和每一页显示的数据量 (`pageSize`) ,之后再发起实际的数据访问请求;最后将得到的结果集合交给 `PageInfo` 对象处理以便于前端展示更多关于当前分页的信息。
#### 控制器接口设计
为了让客户端能够方便地指定所需的分页选项并接收响应数据,还需要构建 RESTful API 接口来暴露给外部调用。这里提供了一种可能的方式[^4]:
```java
@RestController
@RequestMapping("/api/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("")
public ResponseEntity<?> list(@RequestParam(defaultValue="1") Integer pageNum,
@RequestParam(defaultValue="10") Integer pageSize,
@RequestParam(required=false) String orderBy){
if (StringUtils.isNotBlank(orderBy)) {
PageHelper.orderBy(orderBy);
}
PageInfo<UserDTO> pageInfo = userService.getUsers(pageNum, pageSize);
return ResponseEntity.ok().body(pageInfo);
}
}
```
此控制器允许客户自定义排序字段(如果提供了的话),同时也默认设置了第一页和每页十条记录这样的初始值。当接收到 GET 请求时会触发对应的分页查询过程并将最终形成的 `PageInfo` 结果对象回传回去。
阅读全文
相关推荐


















