검색 조건을 생성하는 인터페이스.
Creiteria
==> specification의 return 타입이 Predicate!
파라미터 인자는
검색조건을 생성할때 사용하는 root, criteriaBuilder가 존재
specification을 이용하여 검색 조건을 지정해준다.
List<T> findAll(Specification<T> spec)
spec 인터페이스를 구현한 클래스를 계속 만드는 것은 비효율적이기 때문에
람다식을 이용해서 spec을 생성한다!
public static Specification<ProductEntity> nameLike(String value){ return (root, query, builder) -> builder.like(root.get("name"), "%" + value + "%"); } ProductNameSpecification spec = ProductSpecification.nameLike("이름"); List<ProductEntity> prod = productRepository.findAll(spec);
List<T> findAll(Specification<T> spec, Sort s) Page<T> findAll(Specification<T> spec, Pageable pageable) List<T> findAll(Specification<T> spec, Pageable pageable)