Сортировка результатов запроса с данными Spring

Сортировка результатов запроса с данными Spring

1. Вступление

В этом руководстве мы перейдем кlearn how to sort query results сSpring Data.

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

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

Давайте начнем!

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

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

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

Имя

Фамилия

Номер места

Jill

кузнец

50

Eve

Джексон

94

Fred

Bloggs

22

Рики

Бобби

36

Siya

Колиси

85

3. Домен

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

Здесь мы смоделировали нашего пассажира как объект 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

У нас есть несколько вариантов сортировки с помощью Spring Data.

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

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

All we need to do here to sort our data is include the keyword OrderBy in our method name вместе с именами свойств и направлением (Asc или Dsc), по которому мы хотим выполнить сортировку.

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

interface PassengerRepository extends JpaRepository {

    List findByOrderBySeatNumberAsc();
}

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

Давайте посмотрим на пример метода, который находит пассажиров по фамилииand заказов по номеру места:

List findByLastNameOrderBySeatNumberAsc(String lastName);

4.2. Сортировка с параметромSort

Our second option is to include a Sort parameter, указывающий имя (я) свойства и направление, по которому мы хотим сортировать:

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

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

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

List findByLastName(String lastName, Sort sort);

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

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

5. Заключение

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

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