Для этого вы можете использовать Spring Data:
interface BookRepository extends JpaRepository<Book, Integer> {
}
@RestController
class BookController {
@Autowired
BookRepository bookRepository;
@GetMapping("/books")
public Page<Book> getAllBooks(Pageable pageable){
return bookRepository.findAll(pageable);
}
}
Добавив Pageable
к методу контроллера, Spring добавляет три параметра запроса: page
, size
и sort
.И запрос будет выглядеть так: curl 'http://localhost:8080/books?page=0&size=20&sort=title%2Cdesc'
Spring автоматически создаст этот объект Pageable.
Spring Data может работать с этим объектом и возвращает Page<T>
в ответ, который содержит среди запрошенных сущностей (в массиве content
) много информации о нумерации страниц, такой как totalPages
, numberOfElements
.