작성
·
51
0
@Override
public PageResponseDTO<ProductDTO> searchList(PageRequestDTO pageRequestDTO) {
log.info("----------------------searchList-------------------------");
Pageable pageable = PageRequest.of(
pageRequestDTO.getPage() -1,
pageRequestDTO.getSize(),
Sort.by("pno").descending());
QProduct product = QProduct.product;
QProductImage productImage = QProductImage.productImage;
// from 절
JPQLQuery<Product> query = from(product);
// join
// @ElementCollection을 join 할때는 아래와 같이 사용해야합니다.
// product.imageList를 productImage로 사용하겠다.
query.leftJoin(product.imageList, productImage);
query.where(productImage.ord.eq(0));
Objects.requireNonNull(getQuerydsl()).applyPagination(pageable,query);
List<Tuple> productList = query.select(product,productImage).fetch(); // 쿼리를 실행시키기 위함.
long count = query.fetchCount();
log.info("=======================");
log.info(productList);
return null;
}
이 코드에서 return 값을 넘기고 싶어서 수정하는데 어떻게 해야 값이 넘어가는지를 잘 모르겠습니다...
TodoSearchImpl에서는 new PageImpl<>() 사용하셔서 넘기셨는데 여기서는 어떻게 처리해야 될까요??
2. ProductServiceImpl의 getList() 메서드와 동일한 역할인거같은데, ProductSearchImpl 에서는 querydsl을 사용하셔서 보여주신거고 ProductServiceImpl에서는 jpa를 사용하는 방법을 보여주신게 맞는지 궁금합니다!
답변 2
1
List<Tuple>에 있는 내용을 List<ProductDTO> 로 변환하시는 작업이 필요합니다.
PageRequestDTO는 파라미터에 있는 것을 그대로 사용하시면 되고..
이를 활용해서 아래와 같은 코드로 리턴하실 수 있습니다.
PageResponseDTO<ProductDTO> responseDTO = PageResponseDTO.<ProductDTO>withAll()
.dtoList(dtoList)
.pageRequestDTO(pageRequestDTO)
.totalCount(totalCount)
.build();
return responseDTO;
2번은 말씀하신 내용이 맞습니다.
0
안녕하세요, 인프런 AI 인턴입니다.
질문하신 내용과 유사한 문제를 해결한 기존의 답변을 찾았습니다. 예시 코드와 함께 설명된 답변 링크가 도움이 될 것 같습니다.
검색 결과 반환 값 처리에 대해서는 다음 질문에서 유사한 상황을 해결하는 과정이 설명되어 있습니다. 해당 답변에서는 PageResponseDTO
를 생성하고 반환하는 방법에 대해 안내하고 있습니다. 구체적으로는 결과 목록과 페이지 정보를 활용해 PageResponseDTO
의 인스턴스를 생성하고 반환하는 방법에 대해 설명하고 있습니다.
@Builder
를 이용한 객체 생성 방법이 설명되고 있으며, 이를 활용해 검색된 데이터 목록과 페이지 정보를 담은 DTO 객체를 생성하는 방법이 제시되어 있습니다. 이 예시는 TodoServiceImpl
에서의 사용 예를 보여주나, ProductSearchImpl
에서의 사용법도 유사하게 적용할 수 있습니다.ProductSearchImpl
에서 Querydsl을 사용한 검색 방법과 ProductServiceImpl
에서 JPA를 사용하는 방법이 서로 다른 접근 방식을 보여주는 것이 맞습니다. 각각의 접근 방식은 상황에 따라 선택적으로 사용할 수 있으며, 특정 쿼리의 복잡성이나 성능 요건에 따라 적절한 기술을 선택하여 사용하는 것이 좋습니다.
이러한 작업에서 중요한 것은 비즈니스 로직에 맞게 데이터를 처리하고, 필요에 따라 JPA와 Querydsl 중 어느 것을 사용할지 결정하는 것입니다. JPA는 좀 더 일반적인 데이터 액세스 작업에 적합할 수 있고, Querydsl은 복잡한 쿼리 작업이 필요할 때 더 유리할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
감사합니다 선생님!!