Dynaamiset kyselyt Specificationeilla
Rakentakaa joustavia kyselyitä ohjelmallisesti.
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 Specificationon yksi Criteria-predikaatti- Yhdistäkää niitä komennoilla
and/orja lisätkää ehtoja tilanteen mukaan - Yhdistäkää
Pageable-olioon suodatettuja sivuja varten
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
- Dynaamiset kyselyt Specificationeilla
- Projektiot ja DTO:t
- Auditointi @CreatedDate-annotaatiolla
- Sivutus ja lajittelu