Spring boot CrudRepository를 사용하여 데이터 필터링
스프링 부트로 데이터에 액세스하는 간단한 REST 서비스가 있습니다.CrudRepository
.
이 리포지토리는 이미 다음과 같은 페이지 표시 및 정렬 기능을 구현했습니다.
public interface FlightRepository extends CrudRepository<Flight, Long> {
List<Flight> findAll(Pageable pageable);
}
호칭:
Sort sort = new Sort(direction, ordering);
PageRequest page = new PageRequest(xoffset, xbase, sort);
return flightRepo.findAll(page);
이 저장소에도 필터링을 추가하고 싶습니다(예: 다음을 포함하는 엔티티만 반환).id > 13 AND id < 27
CrudRepository는 이 기능을 지원하지 않는 것 같습니다.이를 달성하는 방법이 있습니까? 아니면 다른 접근 방식을 사용해야 합니까?
팁을 주셔서 감사합니다!
모든 매개 변수 조합에 대해 쿼리 메서드를 만들어야 하는 것에 대한 위의 설명에서 우려하는 사항을 해결할 수 있는 다른 방법은 Criteria API 또는 QueryDSL을 사용하여 사양 패턴을 사용하는 것입니다.
두 가지 접근 방식은 다음과 같은 우려에 대응하여 아래에 요약되어 있습니다.
쿼리가 고정된 기준 집합을 정의하기 때문에 대규모 응용 프로그램의 경우 쿼리 메소드의 수가 증가할 수 있습니다.이 두 가지 단점을 피하기 위해, 여러분이 동적으로 결합하여 쿼리를 작성할 수 있는 원자 술어 세트를 생각해 낸다면 멋지지 않을까요?
https://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/
QueryDSL을 사용하는 것이 조금 더 쉽다고 생각합니다.매개 변수의 조합을 술어로 전달할 수 있는 인터페이스 메서드를 하나만 정의하면 됩니다.
예.
public interface UserRepository extends PagingAndSortingRepository<User, Long>, QueryDslPredicateExecutor<User> {
public List<User> findAll(Predicate predicate);
}
질문할 내용:
repository.findAll(QUser.user.address.town.eq("Glasgow").and(QUser.user.gender.eq(Gender.M)));
repository.findAll(QUser.user.address.town.eq("Edinburgh"));
repository.findAll(QUser.user.foreName.eq("Jim"));
여기서 QUser는 QueryDSL 자동 생성 클래스입니다.
http://www.querydsl.com/static/querydsl/2.1.0/reference/html/ch02s02.html
갱신하다
Spring Data 모듈의 Gosling 릴리스에서는 이제 웹 응용 프로그램의 HTTP 매개 변수에서 자동 술어 생성을 지원합니다.
https://spring.io/blog/2015/09/04/what-s-new-in-spring-data-release-gosling#querydsl-web-support
리포지토리에서 아래 함수를 선언합니다.[EDITED]
Page<Flight> findByIdBetween(Long start, Long end, Pageable pageable)
그런 다음 리포지토리 인스턴스에서 이 함수를 호출할 수 있습니다.자세한 내용은 스프링 데이터 참조를 참조하십시오.
언급URL : https://stackoverflow.com/questions/33646714/filtering-data-with-spring-boot-crudrepository
'programing' 카테고리의 다른 글
SELECT FROM 문에서 테이블 유형을 사용하는 방법은 무엇입니까? (0) | 2023.07.01 |
---|---|
.NET 4.5 웹 소켓 대 신호 R (0) | 2023.06.26 |
들어오는 모든 http 요청을 어떻게 모니터링합니까? (0) | 2023.06.26 |
2D 배열 값 C++ (0) | 2023.06.26 |
Firebase FCM 사용 제한 (0) | 2023.06.26 |