web-dev-qa-db-fra.com

Comment interroger des données prêtes à l'emploi à l'aide des données Spring JPA, à la fois par Trier et Pageable?

J'essaie Spring Data JPA dans mon projet. Je souhaite savoir s'il existe une API prête à l'emploi permettant d'interroger des données, à la fois par Sort et Pageable. Bien sûr, je sais que je peux écrire cette méthode moi-même, je veux simplement savoir s’il existe une méthode originale. Mon DAO étend JpaRepository et j'ai découvert les méthodes suivantes que je peux invoquer:

findAll();
findAll(Pageable pageable);
findAll(Sort sort);

Mais il n’existe pas de méthode telle que findAll(Sort sort, Pageable pageable), je suis donc curieux.

68
Tom

Il y a deux façons d'y parvenir:

final PageRequest page1 = new PageRequest(
  0, 20, Direction.ASC, "lastName", "salary"
);

final PageRequest page2 = new PageRequest(
  0, 20, new Sort(
    new Order(Direction.ASC, "lastName"), 
    new Order(Direction.DESC, "salary")
  )
);

dao.findAll(page1);

Comme vous pouvez le constater, le second formulaire est plus flexible puisqu'il permet de définir une direction différente pour chaque propriété (lastName ASC, salary DESC).

151

Pageable a une option pour spécifier le tri. Depuis le Java doc

PageRequest(int page, int size, Sort.Direction direction, String... properties) 

Crée un nouveau PageRequest avec les paramètres de tri appliqués.

13
gkamal

Printemps Pageable a un tri inclus. Donc, si votre demande a les valeurs, elle retournera une pageable triée.

demande: domain.com/endpoint?sort=[FIELDTOSORTBY]&[FIELDTOSORTBY].dir=[ASC|DESC]&page=0&size=20

Cela devrait renvoyer un champ pageable trié par fourni dans l'ordre indiqué.

0
T04435
 public List<Model> getAllData(Pageable pageable){
       List<Model> models= new ArrayList<>();
       modelRepository.findAllByOrderByIdDesc(pageable).forEach(models::add);
       return models;
   }
0
Nazrul Kabir