在SpringBoot中,可以使用Spring Data JPA提供的PagingAndSortingRepository
接口来实现分页查询。
首先,在你的Repository接口中继承PagingAndSortingRepository
接口,并指定实体类和主键类型。例如,如果你要对名为User
的实体进行分页查询,可以创建一个UserRepository
接口如下:
@Repository
public interface UserRepository extends PagingAndSortingRepository<User, Long> {
}
接下来,在你的Service类中注入UserRepository
,并使用Pageable
接口来指定分页参数。Pageable
接口有许多实现类,其中最常用的是PageRequest
类。你可以创建一个PageRequest
对象,指定页数、每页的数据量和排序规则。
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public Page<User> getUsers(int pageNo, int pageSize, String sortBy) {
Pageable pageable = PageRequest.of(pageNo, pageSize, Sort.by(sortBy));
return userRepository.findAll(pageable);
}
}
在上述代码中,getUsers
方法接受三个参数:pageNo
表示要查询的页数,pageSize
表示每页的数据量,sortBy
表示排序规则。创建了一个PageRequest
对象,并使用userRepository.findAll(pageable)
方法进行查询。
最后,你可以在Controller层调用UserService
中的getUsers
方法来获取分页数据,并将其返回给前端。
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping
public ResponseEntity<Page<User>> getUsers(
@RequestParam(defaultValue = "0") int pageNo,
@RequestParam(defaultValue = "10") int pageSize,
@RequestParam(defaultValue = "id") String sortBy) {
Page<User> page = userService.getUsers(pageNo, pageSize, sortBy);
return ResponseEntity.ok(page);
}
}
上述代码中,getUsers
方法接受三个可选的请求参数:pageNo
表示要查询的页数,默认为0,pageSize
表示每页的数据量,默认为10,sortBy
表示排序规则,默认按照id排序。调用userService.getUsers
方法获取分页数据,并将其包装在ResponseEntity
对象中返回给前端。
这样,在访问/users
接口时,就能获取分页查询的结果了。例如,访问/users?pageNo=0&pageSize=10&sortBy=name
,将返回第一页、每页10条数据,按照name字段排序的结果。