The purpose of JApiFilter is a simplification of the use of REST for filters by parameters!
- Spring Boot 2.x
- Java 8
Use JitPack
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
...
<dependency>
<groupId>com.github.juliofalbo</groupId>
<artifactId>j-api-filter</artifactId>
<version>9df2da2cc5</version>
</dependency>
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
...
dependencies {
compile 'com.github.juliofalbo:j-api-filter:9df2da2cc5'
}
This library contains a Builder for facilitate the use of the Interface ExampleMatcher.
new ExampleBuilder(YourClass.class).
.addFilter("yourField", yourObject)
.build();
Note: If you want to use custom ExampleMatcher, you can send your ExampleMatcher object to build method.
First it is important to know that JApiFilter is based on the Spring Data Specification.
The first thing to do is to implement the JpaSpecificationExecutor interface in your repository, so you will have access to the findAll(Specification spec) method
Using the JApiSpecificationBuilder class is very simple.
To create a specification based on some entity, simply use the createFiltersByEntity method, as in the example below:
Ex:
Specification<YourEntity> specification = JApiSpecificationBuilder.init()
.createFiltersByEntity(yourEntity, JApiOperationEnum.EQUAL)
.buildSpec();
To create specific filters, the builder provides methods to create filters according to a particular operation:
- withEqualFilter
- withBiggerFilter
- withSmallerFilter
- withLikeFilter
- withInFilter
- withCustomFilter
Ex:
Specification<YourEntity> specification = JApiSpecificationBuilder.init()
.withEqualFilter("yourVarName", yourObject)
.withBiggerFilter("yourVarName", yourObject)
.withSmallerFilter("yourVarName", yourObject)
.withLikeFilter("yourVarName", yourObject)
.withInFilter(new FieldIn("yourFieldList", "attributeName"), yourObject)
.withCustomFilter("yourVarName", yourObject, JApiOperationEnum.[yourChoise])
.buildSpec();
Currently available operations are:
- EQUAL
- BIGGER
- SMALLER
- LIKE
- IN
0.2