An example application using Spring boot MVC, Spring Data JPA with the ability to do filter, pagination and sorting.
REST APIs handles filter as followed in the demo application.
It parses and converts the following notions as org.springframework.data.jpa.domain.Specification
. The operation and specification mapping are kept as operation to lambda functions.
Symbol | Operation | example filter query param |
---|---|---|
eq | Equals | city=eq:Sydney |
neq | Not Equals | country=neq:uk |
gt | Greater Than | amount=gt:10000 |
gte | Greater Than or equals to | amount=gte:10000 |
lt | Less Than | amount=lt:10000 |
lte | Less Than or equals to | amount=lte:10000 |
in | IN | country=in:uk, usa, au |
nin | Not IN | country=nin:fr, de, nz |
btn | Between | joiningDate=btn:2018-01-01, 2016-01-01 |
like | Like | firstName=like:John |
The API's query params 'pageNumber' & 'pageSize' are converted to org.springframework.data.domain.PageRequest
Sample .....?pageSize=10&pageNumber=2
'sort' query param with comma separated attributes prefixed with either '+' (ASC Order) or '-' (DESC Order) are converted to org.springframework.data.domain.Sort
with org.springframework.data.domain.PageRequest
Example: .....?sort=+salary,+joiningDate
- Spring Boot
- Spring MVC
- Spring Data JPA
- Hibernate 5.x
- Swagger
- Spring Boot Test/JUnit/Mockito/RestAssured
- JDK 8
- Maven
mvn spring-boot:run