Как запросить данные из коробки, используя Spring data JPA как по сортировке, так и по страницам?


Я пытаюсь весенние данные JPA в моем проекте. Я хочу знать, есть ли готовый API для запроса данных, как Sort и Pageable. Конечно, я знаю, что могу написать этот метод сам, я просто хочу знать, есть ли он из коробки. Мое Дао расширяется JpaRepository, и я обнаружил, что есть следующие методы, которые я могу вызвать:

findAll();
findAll(Pageable pageable);
findAll(Sort sort);

но нет такого метода как findAll(Sort sort, Pageable pageable), так что мне любопытно.

2 67

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 с примененными параметрами сортировки.