Hướng dẫn phân trang, sắp xếp trong Spring Data JPA
NỘI DUNG BÀI VIẾT
Giả sử chúng ta truy vấn theo đối tượng Customer sau:
@Entity
@Table(name = "customer")
public class Customer implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "name")
private String name;
@Column(name = "address")
private String address;
public Customer() {
}
// getter - setter
}
Code language: PHP (php)
Sắp xếp trong spring data jpa (Sorting)
Để sắp xếp trong spring data jpa ta có khá nhiều cách, ví dụ tìm kiếm tất cả các đối tượng customer và sắp xếp theo thứ tự name giảm dần (DESC)
– Đặt tên method (Query Creation)
List<Customer> findAllByOrderByNameDesc();
Code language: HTML, XML (xml)
– Sử dụng câu query bên trong @Query
@Query("SELECT e FROM Customer e ORDER BY e.name DESC")
List<Customer> findAll();
Code language: PHP (php)
– Sử dụng tham số Sort
trong method:
@Query("SELECT e FROM Customer e")
List<Customer> findAll(Sort sort);
Code language: PHP (php)
Muốn sắp xếp như nào thì ta sửa tham số sort theo điều kiện đó, ở đây sắp xếp theo name giảm dần sẽ là:
Sort sort = Sort.by("name").descending();
Code language: JavaScript (javascript)
Phân trang trong spring data jpa (Paging)
Để phân trang trong spring data jpa, trong method truy vấn, thay vì trả về 1 stream hay 1 list thì tra trả về 1 page
Ví dụ:
@Query("SELECT e FROM Customer e")
Page<Customer> findCustomers(Pageable pageable);
Code language: HTML, XML (xml)
Trong đó:
Pageable
sẽ chứa các thông tin phân trang như số phần tử được lấy, vị trí trang được lấyPage
sẽ chứa kết quả trả về (gồm số phần tử, danh sách các phần tử)
Pageable là 1 interface, để tạo nó ta sử dụng PageRequest
Ví dụ tạo pageable với thông tin là page thứ 1với 10 phần tử:
Pageable pageable = PageRequest.of(1, 10);
Ngoài ra bạn cũng có thể sắp xếp các phần tử trong page bằng cách thêm tham số sort
vào trong pageable
:
Sort sort = Sort.by("name").descending();
Pageable pageable = PageRequest.of(1, 10, sort);
Code language: JavaScript (javascript)
Okay, Done!
Xem thêm: Code ví dụ Spring Data JPA Paging và Sorting
References:
https://stackjava.com/spring/huong-dan-phan-trang-sap-xep-trong-spring-data-jpa.html
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/
Leave a Reply