Spring Data cung cấp Pageable/PageRequest cho pagination và Sort cho sorting.
java
public interface UserRepository extends JpaRepository<User, Long> {
Page<User> findByActive(boolean active, Pageable pageable);
}
@GetMapping("/users")
Page<UserDTO> list(@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "20") int size,
@RequestParam(defaultValue = "createdAt") String sort) {
Pageable pageable = PageRequest.of(page, size, Sort.by(sort).descending()); // page 0-indexed
return userRepo.findByActive(true, pageable).map(userMapper::toDTO);
}Page response gồm: content, totalElements, totalPages, size, number (trang hiện tại), first, last.
Lưu ý: Page thêm 1 count query — với large table hoặc infinite scroll không cần tổng số, dùng Slice<T>.