Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät · Oppitunti

Dynaamiset kyselyt Specificationeilla

Rakentakaa joustavia kyselyitä ohjelmallisesti.

Oppitunti 1/413 vaihetta

Dynaamiset kyselyt Specificationeilla on ilmainen Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-kurssilla on yhteensä 4 oppituntia.

Staattisten kyselyiden ongelma

Kun käyttäjät voivat suodattaa monien valinnaisten kenttien perusteella, yhden kyselymetodin kirjoittaminen jokaista yhdistelmää varten kasvattaa määrää nopeasti valtavasti.

Spring Datan Specifications-ominaisuuden avulla kyselyt voi muodostaa dynaamisesti suorituksen aikana sen perusteella, mitkä suodattimet on annettu.

JpaSpecificationExecutor

Laajentakaa repositoriossanne JpaSpecificationExecutor-rajapintaa, jotta Specification-pohjaiset kyselyt otetaan käyttöön.

public interface UserRepository
    extends JpaRepository<User, Long>,
            JpaSpecificationExecutor<User> {
}

Specification

Specification<T> kuvaa yhtä WHERE-ehtoa JPA Criteria API:n avulla.

Specification<User> hasName(String name) {
    return (root, query, cb) ->
        cb.equal(root.get("name"), name);
}

Specificationin suorittaminen

Välittäkää spec parametrina metodille findAll.

List<User> users =
    userRepository.findAll(hasName("Alice"));

Yhdistäminen and-operaattorilla

Specificationit voidaan yhdistää komennoilla and, or ja not.

Specification<User> spec =
    hasName("Alice").and(isActive(true));
List<User> users = userRepository.findAll(spec);

Ehtojen muodostaminen

Varsinainen hyöty on siinä, että predikaatteja lisätään vain, kun suodatin on annettu.

Specification<User> spec = Specification.where(null);
if (name != null) {
    spec = spec.and(hasName(name));
}
if (active != null) {
    spec = spec.and(isActive(active));
}
return userRepository.findAll(spec);

Like- ja vertailupredikaatit

Criteria-rakentaja tarjoaa monia predikaattityyppejä.

Specification<User> nameLike(String part) {
    return (root, query, cb) ->
        cb.like(root.get("name"), "%" + part + "%");
}

Specification<User> olderThan(int age) {
    return (root, query, cb) ->
        cb.greaterThan(root.get("age"), age);
}

Liittyvien entiteettien yhdistäminen

Specificationit voivat siirtyä liitosten kautta ja suodattaa liittyvien entiteettien perusteella.

Specification<User> inCity(String city) {
    return (root, query, cb) ->
        cb.equal(root.join("address").get("city"), city);
}

Specificationit sivutuksen kanssa

Yhdistäkää Specification ja Pageable, jotta saatte suodatetut ja sivutetut tulokset.

Page<User> page = userRepository.findAll(
    spec, PageRequest.of(0, 20));

Osumien laskeminen

count hyväksyy myös Specificationin.

long matches = userRepository.count(hasName("Alice"));

Predikaattitehtaiden uudelleenkäyttö

Ryhmitelkää Specification-tehtaat apuluokkaan, jotta niitä voidaan käyttää uudelleen ja testata yksikkötesteillä.

public class UserSpecs {
    public static Specification<User> active() {
        return (root, q, cb) ->
            cb.isTrue(root.get("active"));
    }
}

Pikatarkistus

Testatkaa, miten hyvin ymmärrätte Specificationit.

Kertaus

Opitte tekemään dynaamisia kyselyitä:

  • Laajentakaa JpaSpecificationExecutor-rajapintaa
  • Specification on yksi Criteria-predikaatti
  • Yhdistäkää niitä komennoilla and/or ja lisätkää ehtoja tilanteen mukaan
  • Yhdistäkää Pageable-olioon suodatettuja sivuja varten
Aloita maksutta

Opi Java tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
24
Oppitunnit
93

Usein kysytyt kysymykset

Onko oppitunti ”Dynaamiset kyselyt Specificationeilla” ilmainen?

Kyllä – oppitunnin ”Dynaamiset kyselyt Specificationeilla” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-kurssin, päivitä CoddyKit PROhon. Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Dynaamiset kyselyt Specificationeilla”?

Rakentakaa joustavia kyselyitä ohjelmallisesti. Harjoittelet Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Dynaamiset kyselyt Specificationeilla”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppitunnilla?

Kyllä. Jokainen Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Dynaamiset kyselyt Specificationeilla
  2. Projektiot ja DTO:t
  3. Auditointi @CreatedDate-annotaatiolla
  4. Sivutus ja lajittelu
← Takaisin: Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät