최대 1 분 소요


OrderService(+)

@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class OrderService {
        
    // 생략
    ...

    // 검색 코드 추가
    public List<Order> findOrders(OrderSearch orderSearch) {
        return orderRepository.findAll(orderSearch);
    }
}


OrderSearch

검색 조건 파라미터

public class OrderSearch {

    private String memberName;       // 회원 이름
    private OrderStatus orderStatus; // 주문 상태[ORDER, CANCEL]

    // Getter and Setter
}


OrderRepository(+)

@Repository
public class OrderRepository {
    
    // 생략
    ...

    public List<Order> findAll(OrderSearch orderSearch) {
        
        String jpql = "select o from Order o join o.member m" +
                " where o.status = :status" +
                " and m.name like :name";
        return em.createQuery(jpql, Order.class)
                .setParameter("status", orderSearch.getOrderStatus())
                .setParameter("name", orderSearch.getMemberName())
                .setMaxResults(1000)    // 조회할 데이터 수
                .getResultList();
    }
}

findAll(OrderSearch orderSearch)메서드는 검색 조건에 동적으로 쿼리를 생성해서 주문 엔티티를 조회한다.

나머지 Controller와 View 관련 코드는 생략…


<출처 : 인프런 - 실전! 스프링 부트와 JPA 활용1 (김영한)>

댓글남기기