Dynamiczne zapytania ze Specifications
Buduj elastyczne zapytania programowo
Dynamiczne zapytania ze Specifications to bezpłatna lekcja Spring Boot 4 Microservices & REST APIs na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Spring Boot 4 Microservices & REST APIs, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Spring Boot 4 Microservices & REST APIs zawiera 4 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
The Problem with Static Queries
When users can filter by many optional fields, writing one query method per combination explodes quickly.
Spring Data Specifications let you build queries dynamically at runtime based on which filters are present.
JpaSpecificationExecutor
Extend JpaSpecificationExecutor on your repository to enable Specification-based queries.
public interface UserRepository
extends JpaRepository<User, Long>,
JpaSpecificationExecutor<User> {
}A Specification
A Specification<T> describes a single WHERE predicate using the JPA Criteria API.
Specification<User> hasName(String name) {
return (root, query, cb) ->
cb.equal(root.get("name"), name);
}Executing a Specification
Pass the spec to findAll.
List<User> users =
userRepository.findAll(hasName("Alice"));Combining with and
Specifications compose with and, or, and not.
Specification<User> spec =
hasName("Alice").and(isActive(true));
List<User> users = userRepository.findAll(spec);Building Conditionally
The real power: add predicates only when the filter is supplied.
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 and Comparison Predicates
The Criteria builder offers many predicate types.
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);
}Joining Related Entities
Specifications can navigate joins to filter on associated entities.
Specification<User> inCity(String city) {
return (root, query, cb) ->
cb.equal(root.join("address").get("city"), city);
}Specifications with Paging
Combine a Specification with a Pageable for filtered, paginated results.
Page<User> page = userRepository.findAll(
spec, PageRequest.of(0, 20));Counting Matches
count accepts a Specification too.
long matches = userRepository.count(hasName("Alice"));Reusing Predicate Factories
Group spec factories in a helper class so they can be reused and unit tested.
public class UserSpecs {
public static Specification<User> active() {
return (root, q, cb) ->
cb.isTrue(root.get("active"));
}
}Quick Check
Test your understanding of Specifications.
Recap
You learned dynamic querying:
- Extend
JpaSpecificationExecutor - A
Specificationis one Criteria predicate - Compose with
and/or, add conditionally - Combine with
Pageablefor filtered pages
Ucz się Java dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 24
- Lekcje
- 93
Często zadawane pytania
Czy lekcja „Dynamiczne zapytania ze Specifications” jest bezpłatna?
Tak — pełny tekst „Dynamiczne zapytania ze Specifications” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Spring Boot 4 Microservices & REST APIs, przejdź na CoddyKit PRO. Kurs Spring Boot 4 Microservices & REST APIs zawiera 4 lekcji w sumie.
Co nauczysz się w „Dynamiczne zapytania ze Specifications”?
Buduj elastyczne zapytania programowo Ćwiczysz Spring Boot 4 Microservices & REST APIs z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Spring Boot 4 Microservices & REST APIs?
Nie wymagamy żadnego doświadczenia. Spring Boot 4 Microservices & REST APIs w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Dynamiczne zapytania ze Specifications”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Spring Boot 4 Microservices & REST APIs?
Tak. Każda lekcja Spring Boot 4 Microservices & REST APIs zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Dynamiczne zapytania ze Specifications
- Projekcje i DTO
- Audytowanie za pomocą @CreatedDate
- Stronicowanie i sortowanie