Springboot项目通过pagehelper实现分页(后端pagehelper,前端JS)
时间: 2024-09-04 10:01:09 浏览: 84
SpringBoot项目中,可以利用PageHelper这个MyBatis的插件来方便地实现后端分页。PageHelper是一个优秀的通用分页插件,它简化了MyBatis的分页查询,并支持JSP、Thymeleaf等前端模板引擎。
首先,在pom.xml文件中添加PageHelper的依赖:
```xml
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.x.y</version>
</dependency>
```
然后,在Mapper接口中添加注解`@Select`, `@SelectList`或`@Parameters`来指定分页查询:
```java
public interface UserMapper {
@Select("SELECT * FROM user LIMIT #{offset}, #{limit}")
List<User> selectUsers(@Param("offset") int offset, @Param("limit") int limit);
@SelectList("SELECT * FROM user", "offset = #{offset}, limit = #{limit}", "")
Map<Integer, User> selectUsersMap(int offset, int limit);
}
```
在Service层中注入Mapper并调用分页方法:
```java
@Service
public class UserService {
private final UserMapper userMapper;
public UserService(UserMapper userMapper) {
this.userMapper = userMapper;
}
// 分页查询示例
public List<User> getUsers(int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize); // 开始分页
return userMapper.selectUsers(pageNum, pageSize); // 执行查询
}
}
```
在Controller层,你可以接受前端传递的页码和每页大小,调用Service获取数据,再将其返回给前端展示:
```java
@GetMapping("/users")
public PageInfo<User> getUsers(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
@RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
PageInfo<User> pageInfo = new PageInfo<>(userService.getUsers(pageNum, pageSize));
return pageInfo;
}
// 或者直接使用Spring Data JPA的Pageable
@GetMapping("/users")
public ResponseEntity<List<User>> getUsers(Pageable pageable) {
return ResponseEntity.ok(userRepository.findAll(pageable));
}
```
前端可以通过Ajax请求这些API,并处理返回的`PageInfo`对象来显示分页的数据。
阅读全文