Сортиране на резултатите от заявката с пролетни данни

1. Въведение

В този урок ще научим как да сортираме резултатите от заявките с Spring Data.

Първо ще разгледаме схемата на данните, които искат да търсят и сортират.

И тогава ще се потопим направо в това как да постигнем тези пролетни данни.

Да започваме!

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

По-долу имаме някои примерни данни. Въпреки че сме го представили тук като таблица, бихме могли да използваме някоя от базите данни, поддържани от Spring Data, за да я поддържаме.

Въпросът, на който искаме да отговорим, е: „Кой заема кое място в авиокомпанията?“ но за да бъдем по-лесни за ползване, искаме да сортираме по номер на седалката.

Първо име Фамилия Номер на седалката
Джил Смит 50
Ева Джаксън 94
Фред Bloggs 22.
Рики Боби 36
Сия Колиси 85

3. Домейн

За да създадем хранилище Spring Data, трябва да предоставим клас на домейн, както и тип id.

Тук сме моделирали нашия пътник като 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.

4.1. Сортиране с ключова дума OrderBy Method

Една от възможностите е да се използва извеждането на метода на Spring Data, при което заявката се генерира от името на метода и подписа.

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

Можем да използваме тази конвенция, за да създадем заявка, която връща нашите пътници във възходящ ред по номер на седалката:

interface PassengerRepository extends JpaRepository { List findByOrderBySeatNumberAsc(); }

Също така можем да комбинираме тази ключова дума с всички стандартни имена на методите Spring Data.

Нека да видим пример за метод, който намира пътниците по фамилия и поръчки по номер на седалката:

List findByLastNameOrderBySeatNumberAsc(String lastName);

4.2. Сортиране с параметър за сортиране

Втората ни опция е да включим параметър Sort , указващ имената (ите) на свойствата и посоката, по която искаме да сортираме:

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

В този случай използваме метода findAll () и добавяме опцията Сортиране , когато го извикваме .

Също така можем да добавим този параметър към нова дефиниция на метода:

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 като параметър на метода.

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