Как запросить данные из коробки, используя Spring data JPA как по сортировке, так и по страницам?
Я пытаюсь весенние данные JPA в моем проекте. Я хочу знать, есть ли готовый API для запроса данных, как Sort
и Pageable
. Конечно, я знаю, что могу написать этот метод сам, я просто хочу знать, есть ли он из коробки. Мое Дао расширяется JpaRepository
, и я обнаружил, что есть следующие методы, которые я могу вызвать:
findAll();
findAll(Pageable pageable);
findAll(Sort sort);
но нет такого метода как findAll(Sort sort, Pageable pageable)
, так что мне любопытно.
2 ответа:
есть два способа достичь этого:
final PageRequest page1 = new PageRequest( 0, 20, Direction.ASC, "lastName", "salary" ); final PageRequest page2 = new PageRequest( 0, 20, new Sort( new Order(Direction.ASC, "lastName"), new Order(Direction.DESC, "salary") ) ); dao.findAll(page1);
Как вы можете видеть, вторая форма является более гибкой, поскольку она позволяет определить различные направления для каждого свойства (
lastName ASC, salary DESC
).
Pageable также имеет возможность указать сортировку. Из документации
PageRequest(int page, int size, Sort.Direction direction, String... properties)
создает новый PageRequest с примененными параметрами сортировки.