«1. Введение

В этом руководстве мы узнаем, как сортировать результаты запроса с помощью Spring Data.

Сначала мы рассмотрим схему данных, которые необходимо запросить и отсортировать.

А затем мы углубимся в то, как получить эти данные Spring.

Начнем!

2. Тестовые данные

Ниже приведены некоторые примеры данных. Хотя мы представили его здесь в виде таблицы, мы могли бы использовать любую из баз данных, поддерживаемых Spring Data, для ее сохранения.

Вопрос, на который мы хотим ответить, звучит так: «Кто какое место занимает в авиакомпании?», но чтобы сделать его более удобным для пользователя, мы хотим отсортировать его по номеру места.

First Name Last Name Seat Number
Jill Smith 50
Eve Jackson 94
Fred Bloggs 22
Ricki Bobbie 36
Siya Kolisi 85

3. Домен

Чтобы создать репозиторий данных Spring, нам нужно предоставить класс домена, а также тип идентификатора.

Здесь мы смоделировали нашего пассажира как объект JPA, но мы могли бы так же легко смоделировать его как документ MongoDB или любую другую абстракцию модели:

@Entity
class Passenger {

    @Id
    @GeneratedValue
    @Column(nullable = false)
    private Long id;

    @Basic(optional = false)
    @Column(nullable = false)
    private String firstName;

    @Basic(optional = false)
    @Column(nullable = false)
    private String lastName;

    @Basic(optional = false)
    @Column(nullable = false)
    private int seatNumber;

    // constructor, getters etc.
}

4. Сортировка с помощью Spring Data

Мы в нашем распоряжении есть несколько различных вариантов сортировки с помощью Spring Data.

4.1. Сортировка с помощью ключевого слова метода OrderBy

Одним из вариантов может быть использование производного метода Spring Data, при котором запрос генерируется из имени метода и подписи.

Все, что нам нужно сделать здесь, чтобы отсортировать наши данные, это включить ключевое слово OrderBy в имя нашего метода вместе с именем(ями) свойства и направлением (Asc или Desc), по которому мы хотим сортировать.

Мы можем использовать это соглашение для создания запроса, который возвращает наших пассажиров в порядке возрастания по номеру места:

interface PassengerRepository extends JpaRepository<Passenger, Long> {

    List<Passenger> findByOrderBySeatNumberAsc();
}

Мы также можем комбинировать это ключевое слово со всеми стандартными именами методов Spring Data.

Рассмотрим пример метода поиска пассажиров по фамилии и заказов по номеру места:

List<Passenger> findByLastNameOrderBySeatNumberAsc(String lastName);

4.2. Сортировка с помощью параметра сортировки

Наш второй вариант — включить параметр сортировки, указывающий имя(я) свойства и направление, по которому мы хотим сортировать:

List<Passenger> passengers = repository.findAll(Sort.by(Sort.Direction.ASC, "seatNumber"));

В этом случае мы используем метод findAll( ) и добавив параметр Sort при его вызове.

Мы также можем добавить этот параметр в определение нового метода:

List<Passenger> findByLastName(String lastName, Sort sort);

Наконец, если, возможно, мы подкачиваем страницы, мы можем указать нашу сортировку в объекте Pageable:

Page<Passenger> page = repository.findAll(PageRequest.of(0, 1, Sort.by(Sort.Direction.ASC, "seatNumber")));

5. Заключение ~~ ~ У нас есть два простых варианта сортировки данных с помощью Spring Data посредством вывода метода с использованием ключевого слова OrderBy или с использованием объекта Sort в качестве параметра метода.

Как всегда, вы можете найти код на GitHub.

«