Ich versuche Spring Data JPA in meinem Projekt. Ich möchte wissen, ob es eine sofort einsatzbereite API gibt, mit der Daten sowohl von Sort
als auch abgefragt werden können 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 wird erweitert JpaRepository
, und ich habe festgestellt, dass ich die folgenden Methoden aufrufen kann:
findAll();
findAll(Pageable pageable);
findAll(Sort sort);
Aber es gibt keine Methode wie findAll(Sort sort, Pageable pageable)
, also bin ich neugierig.
Pageable hat die Option, 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.
quelle
Im Jahr 2020 ist die akzeptierte Antwort etwas
PageRequest
veraltet, da sie veraltet ist. Verwenden Sie daher den folgenden Code:Pageable page = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by("id").descending()); return repository.findAll(page);
quelle
Spring Pageable enthält eine Sortierung. Wenn Ihre Anfrage also die Werte hat, wird eine sortierte Seite zurückgegeben.
Anfrage:
domain.com/endpoint?sort=[FIELDTOSORTBY]&[FIELDTOSORTBY].dir=[ASC|DESC]&page=0&size=20
Das sollte ein sortiertes, nach Seiten sortiertes Feld zurückgeben, das in der angegebenen Reihenfolge angegeben ist.
quelle
In meinem Fall zu verwenden
Pageable
undSorting
gleichzeitig habe ich wie unten verwendet. In diesem Fall habe ich alle Elemente mit Paginierung genommen undid
nach absteigender Reihenfolge sortiert:modelRepository.findAll(PageRequest.of(page, 10, Sort.by("id").descending()))
Wie oben basierend auf Ihren Anforderungen können Sie Daten auch mit 2 Spalten sortieren.
quelle
public List<Model> getAllData(Pageable pageable){ List<Model> models= new ArrayList<>(); modelRepository.findAllByOrderByIdDesc(pageable).forEach(models::add); return models; }
quelle