wake-up-neo.net

Wie fragt man Daten aus der Box mit Spring Data JPA sowohl nach Sort als auch nach Pageable ab?

Ich versuche Spring data JPA in meinem Projekt. Ich möchte wissen, ob es eine sofort einsatzbereite API gibt, um Daten abzufragen, sowohl von Sort als auch von Pageable. Natürlich weiß ich, dass ich diese Methode selbst schreiben kann, ich möchte nur wissen, ob es eine Out-of-the-Box-Methode gibt. Mein DAO erweitert JpaRepository und ich habe festgestellt, dass es folgende Methoden gibt, die ich aufrufen kann:

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

Aber es gibt keine Methode wie findAll(Sort sort, Pageable pageable), also bin ich neugierig.

68
Tom

Es gibt zwei Möglichkeiten, dies zu erreichen:

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);

Wie Sie sehen, ist das zweite Formular flexibler, da für jede Eigenschaft (lastName ASC, salary DESC) eine andere Richtung definiert werden kann.

151

Pageable hat eine Option, um auch die Sortierung anzugeben. Aus dem Java-Dokument

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

Erstellt eine neue PageRequest mit angewendeten Sortierparametern.

13
gkamal

Spring Pageable enthält eine Sortierung. Wenn Ihre Anfrage also die Werte hat, wird eine sortierte Auslagerungsseite zurückgegeben.

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

Daraufhin wird ein sortiertes seitenfähiges Feld in der angegebenen Reihenfolge zurückgegeben.

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