Skip to content

Latest commit

 

History

History
100 lines (72 loc) · 1.93 KB

relational_instruction.md

File metadata and controls

100 lines (72 loc) · 1.93 KB

Add fsp-relational dependency to your project

<dependency>
    <groupId>pl.execon.commons</groupId>
    <artifactId>fsp-relational</artifactId>
    <version>0.1.0</version>
</dependency>

In your repository interface extend RelationalFsp<T> interface in your repository interface. This will enable on this repository method findFsp().

+  extends RelationalFsp<T>
@Repository
public interface ProductRepository extends JpaRepository<Product, Long>, RelationalFsp<Product> {
}

Last step is using findFsp() method in your service passing FspRequest.

public FspResponse<Product> getFilteredProduct(){
        return repository.findFsp(new FspRequest());
        }

Example of use FSP for Product entity.

@Entity
public class Product {

    @Id
    private Long id;

    private String name;
    private int quantity;
}    
@Service
@AllArgsConstructor
public class ProductService {

    private final ProductRepository repository;

    public FspResponse<Product> getFilteredProducts(FspRequest fspRequest) {
        return repository.findFsp(fspRequest);
    }
}
@RestController
@AllArgsConstructor
public class ProductController {

    private final ProductService service;

    @PostMapping("/fsp")
    public FspResponse<Product> getFilteredProducts(@RequestBody FspRequest fspRequest) {
        return service.getFilteredProducts(fspRequest);
    }
}

FspRequest mapping funcion

You can also call mapping function on FspResponse object to map your result to for example DTO object

public class ProductService {
    public FspResponse<ProductDTO> getFilteredProducts(FspRequest fspRequest) {
        FspResponse<Product> products = repository.findFsp(fspRequest, Product.class);
        return products.map(product -> mappingFunction(product));
    }
}