This project is an example of how can we build advanced query search with Spring Data JPA.
The main goal of this project is to show two forms that we can build advanced query search with Spring Data JPA.
- First one, mapped as version 1 ("/persons/v1"), we are implementing a custom repository and using the EntityManager for build our condition query;
- Second one, mapped as version 2 ("/persons/v2"), implementated using Spring Data JPA Specifications;
You can use both routes, /v1 or /v2. They will bring the same response, the only difference is thay they are implemented in differentes ways. Check below for some examples.
Advanced Search examples:
localhost:8080/persons/v1?name=Ma
localhost:8080/persons/v1?name=Ma&email=pedro@
localhost:8080/persons/v1?name=Ma&email=pedro@&maritalStatus=MARRIED
localhost:8080/persons/v1?name=Ma&email=pedro@&maritalStatus=MARRIED&district=Tijuca
localhost:8080/persons/v1?name=Ma&email=pedro@&maritalStatus=MARRIED&district=Tijuca&city=Rio de Janeiro
localhost:8080/persons/v1?name=Ma&email=pedro@&maritalStatus=MARRIED&state=RJ
Pagination and Sorting examples:
localhost:8080/persons/v1?pageSize=5
localhost:8080/persons/v1?pageSize=5&pageNumber=0
localhost:8080/persons/v1?sortBy=name&orderBy=asc
localhost:8080/persons/v1?pageSize=5&pageNumber=0&sortBy=name&orderBy=desc
- DTO (Data Transfer Object) principles
- Advanced query search with:
- Spring Data JPA Specifications
- TypedQuery way
- Custom Exception Handler messages
First, open your preference code editor and run the following code below:
mvn clean install
After the maven downloaded all dependencies, run the SpringRestAdvancedSearchApplication.class.
For tests cases, you can check the API endpoints with Postman.