diff --git a/README.md b/README.md index 1623f389..788bd1e5 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ We have separate folders for the samples of individual modules: * `interceptors` - Example of how to enrich the repositories with AOP. * `security` - Example of how to integrate Spring Data JPA Repositories with Spring Security. * `multiple-datasources` - Examples of how to use Spring Data JPA with multiple `DataSource`s. +* `query-by-example` - Example project showing usage of Query by Example with MongoDB. ## Spring Data MongoDB @@ -21,6 +22,7 @@ We have separate folders for the samples of individual modules: * `aggregation` - Example project to showcase the MongoDB aggregation framework support. * `text-search` - Example project showing usage of MongoDB text search feature. * `geo-json` - Example project showing usage of [GeoJSON](http://geojson.org) with MongoDB. +* `query-by-example` - Example project showing usage of Query by Example with MongoDB. ## Spring Data REST diff --git a/jpa/query-by-example/README.md b/jpa/query-by-example/README.md index c4f45920..351ed984 100644 --- a/jpa/query-by-example/README.md +++ b/jpa/query-by-example/README.md @@ -8,4 +8,22 @@ Query by Example (QBE) is a user-friendly querying technique with a simple inter An `Example` takes a data object (usually the entity object or a subtype of it) and a specification how to match properties. You can use Query by Example with JPA Repositories. +```java +public interface PersonRepository extends CrudRepository, QueryByExampleExecutor { +} +``` + +```java +Example example = Example.of(new Person("Jon", "Snow")); +repo.findAll(example); + + +ExampleMatcher matcher = ExampleMatcher.matching(). + .withMatcher("firstname", endsWith()) + .withMatcher("lastname", startsWith().ignoreCase()); + +Example example = Example.of(new Person("Jon", "Snow"), matcher); +repo.count(example); +``` + This example contains a test class to illustrate Query-by-Example with a Repository in `UserRepositoryIntegrationTests`. diff --git a/mongodb/query-by-example/README.md b/mongodb/query-by-example/README.md index 01ad499c..db247bc3 100644 --- a/mongodb/query-by-example/README.md +++ b/mongodb/query-by-example/README.md @@ -8,5 +8,23 @@ Query by Example (QBE) is a user-friendly querying technique with a simple inter An `Example` takes a data object (usually the entity object or a subtype of it) and a specification how to match properties. You can use Query by Example with `MongoOperations` and Repositories. +```java +public interface PersonRepository extends CrudRepository, QueryByExampleExecutor { +} +``` + +```java +Example example = Example.of(new Person("Jon", "Snow")); +repo.findAll(example); + + +ExampleMatcher matcher = ExampleMatcher.matching(). + .withMatcher("firstname", endsWith()) + .withMatcher("lastname", startsWith().ignoreCase()); + +Example example = Example.of(new Person("Jon", "Snow"), matcher); +repo.count(example); +``` + This example contains two test classes to illustrate Query-by-Example with `MongoOperations` in `MongoOperationsIntegrationTests` and the usage with a Repository in `UserRepositoryIntegrationTests`.