Stránkovanie a triedenie pomocou Spring Data JPA

1. Prehľad

Stránkovanie je často užitočné, keď máme veľký súbor údajov a chceme ho používateľovi predstaviť v menších častiach.

Počas stránkovania tiež často musíme tieto údaje triediť podľa niektorých kritérií.

V tomto návode sa dozvieme, ako ľahko stránkovať a triediť pomocou Spring Data JPA.

2. Počiatočné nastavenie

Najprv povedzme, že máme Výrobok entita ako naša doménová trieda:

@Entity public class Product {@Id private long id; súkromné ​​meno reťazca; dvojitá súkromná cena; // konštruktory, getre a setre}

Každý náš Výrobok inštancie má jedinečný identifikátor: id, jeho názov a jeho cena s tým spojené.

3. Vytvorenie úložiska

Pre prístup k našim Výroboks, budeme potrebovať Úložisko produktu:

verejné rozhranie ProductRepository rozširuje PagingAndSortingRepository {List findAllByPrice (dvojnásobná cena, stránkovateľné stránkovateľné); }

Tým, že to predĺžiPagingAndSortingRepository, dostaneme findAll (stránkovateľné stránkovateľné) a findAll (zoradiť zoradiť) metódy stránkovania a triedenia.

Naopak, mohli sme sa rozhodnúť predĺžiť JpaRepository namiesto toho, ako sa rozširuje PagingAndSortingRepository tiež.

Raz predĺžime PagingAndSortingRepository, môžeme pridať naše vlastné metódy, ktoré zaberajú Stránkovateľné a Triediť ako parametre, ako sme to robili tu s findAllByPrice.

Poďme sa pozrieť na to, ako stránkovať naše Výroboks pomocou našej novej metódy.

4. Stránkovanie

Akonáhle máme svoje úložisko siahajúce od PagingAndSortingRepository, musíme len:

  1. Vytvorte alebo získajte PageRequest objekt, ktorým je implementácia Stránkovateľné rozhranie
  2. Prejdite okolo PageRequest objekt ako argument k metóde úložiska, ktorú plánujeme použiť

Môžeme vytvoriť PageRequest objekt zadaním požadovaného čísla stránky a veľkosti stránky.

Tu počet stránok začína na nule:

Pageable firstPageWithTwoElements = PageRequest.of (0, 2); Pageable secondPageWithFiveElements = PageRequest.of (1, 5);

Na jar MVC sa tiež môžeme rozhodnúť získať Stránkovateľné napríklad v našom radiči pomocou Spring Data Web Support.

Keď už máme svoje PageRequest objekt, môžeme ho odovzdať pri vyvolaní metódy nášho úložiska:

Stránka allProducts = productRepository.findAll (firstPageWithTwoElements); Zoznam allTenDollarProducts = productRepository.findAllByPrice (10, secondPageWithFiveElements);

The findAll (stránkovateľné stránkovateľné) metóda štandardne vracia a Strana objekt.

Avšak môžeme sa rozhodnúť vrátiť buď a Stránka, a Plátok, alebo a Zoznam z ktorejkoľvek z našich vlastných metód vracajúcich stránkované údaje.

A Strana napríklad zoznam Výroboks, vie aj o celkovom počte dostupných stránok. Spustí ďalší dotaz na počet, aby ste to dosiahli. Aby sme sa vyhli takýmto režijným nákladom, môžeme namiesto toho vrátiť a Nakrájajte alebo a Zoznam.

A Nakrájajte vie iba to, či je nasledujúci plátok k dispozícii alebo nie.

5. Stránkovanie a triedenie

Podobne, ak chcete nechať zoradiť iba výsledky svojich dotazov, môžeme jednoducho odovzdať inštanciu Triediť na metódu:

Stránka allProductsSortedByName = productRepository.findAll (Sort.by ("name"));

Čo však, keď chceme triediť a stránkovať naše údaje?

Môžeme to urobiť odovzdaním podrobností o triedení do našich PageRequest samotný objekt:

Pageable seřazené podľa názvu = PageRequest.of (0, 3, Sort.by ("meno")); Pageable seřazenéByPriceDesc = PageRequest.of (0, 3, Sort.by ("cena"). Zostupne ()); Pageable seřazenéByPriceDescNameAsc = PageRequest.of (0, 5, Sort.by ("cena"). Zostupne (). A (Sort.by ("meno")));

Na základe našich požiadaviek na triedenie môžeme určiť triediace polia a smer triedenia pri vytváraní našich PageRequest inštancia.

Ako obvykle, potom môžeme prejsť týmto Stránkovateľné zadajte inštanciu do metódy úložiska.

6. Záver

V tomto článku sme sa naučili, ako stránkovať a triediť výsledky našich dotazov v Spring Data JPA.

Úplné príklady kódov použitých v tomto článku sú ako vždy k dispozícii na stránkach Github.


$config[zx-auto] not found$config[zx-overlay] not found