Học viên: Vũ Bá Phúc
Lớp: Java Fullstack 15
Email: phucnhan20022022@gmail.com
Số điện thoại: 0968616076
Nguồn tham khảo : https://www.baeldung.com/spring-data-sorting

1. Giới Thiệu

Trong hướng dẫn này, chúng ta sẽ học cách sắp xếp các kết quả truy vấn bằng Spring Data.

Đầu tiên, chúng ta sẽ xem sơ đồ dữ liệu mà chúng ta muốn truy vấn và sắp xếp. Sau đó chúng ta sẽ thảo luận làm thế nào để hoàn thành
được điều đó với Spring Data.

Bắt đầu thôi nào!

2. Kiểm Tra Dữ Liệu

Dưới đây chúng ta có một số dữ liệu mẫu. Chúng ta thể hiện dữ liệu dưới dạng bảng nhưng chúng ta có thể sử dụng bất kì cơ sở dữ liệu nào được hỗ trợ bởi Spring Data để duy trì nó.

Câu hỏi mà chúng tôi sẽ trả lời là, “Ai đang ngồi ở ghế nào trên hãng hàng không?” Để làm cho điều này thân thiện hơn với người dùng, chúng tôi sẽ sắp xếp theo số ghế.

First NameLast NameSeat Number
JillSmith50
EveJackson94
FredBloggs22
RickiBobbie36
SiyaKolisi85

3. Domain(Đối tượng)

Để khởi tạo 1 Spring Data Repository, chúng ta cần cung cấp 1 domain class, trong đó có trường Id.

Ở Đây, chúng ta modeled hóa Hành Khách như 1 JPA Entity, nhưng chúng ta có thể dễ dàng modeled hóa nó như trong MongoDB hoặc các DataBase khác.

@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. Sắp Xếp với Spring Data

Chúng tôi có 2 cách khác nhau để sắp xếp với Spring Data.

4.1 Sắp xếp với từ khoá OderBy trong tên Method

interface PassengerRepository extends JpaRepository<Passenger, Long> {

    List<Passenger> findByOrderBySeatNumberAsc();
}

Chúng ta có thể kết hợp từ khóa này với tất cả các tên Method trong Spring Data.

Hãy xem 1 ví dụ về Method tìm khách hàng theo lastName và sắp xếp tăng dần theo số ghế:

List<Passenger> findByLastNameOrderBySeatNumberAsc(String lastName);

4.2 Sắp Xếp với Sort Parameter

Cách thứ 2 của chúng tôi là sử dụng Sort Parameter chỉ định các tên thuộc tính và chiều thứ tự mà chúng ta muốn sắp xếp:

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

Trong trường hợp này, chúng tôi đang sử dụng Method findAll() và thêm thuộc tính Sort khi gọi nó.

Chúng ta cũng có thể thêm parameter vào 1 Method mới:

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

Cuối cùng, nếu chúng ta muốn phần trang, chúng ta có thể chỉ định Sort trong 1 đối tượng Pageable:

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

5. Kết Luận

Chúng tôi có 2 cách để sắp xếp dữ liệu với Spring Data: Sử dụng từ khoá OderBy trong tên Method và Sử dụng Thư viện Sort làm tham số cho Method