변환할게 많아서 코드량이 좀 된다.
@GetMapping("/api/v2/orders")
public List<OrderDTO> ordersV2() {
List<Order> orders = orderRepository.findAll(new OrderSearch());
List<OrderDTO> collect = orders.stream()
.map(o -> new OrderDTO(o))
.collect(Collectors.toList());
return collect;
}
@Data
static class OrderDTO {
private Long orderId;
private String name;
private LocalDateTime orderDate;
private OrderStatus orderStatus;
private Address address;
private List<OrderItem> orderItems;
public OrderDTO(Order order) {
orderId = order.getId();
name = order.getMember().getName();
orderDate = order.getOrderDate();
orderStatus = order.getStatus();
address = order.getDelivery().getAddress();
orderItems = order.getOrderItems();
}
}
초기화를 추가하면 된다?
@Data
static class OrderDTO {
private Long orderId;
private String name;
private LocalDateTime orderDate;
private OrderStatus orderStatus;
private Address address;
private List<OrderItem> orderItems;
public OrderDTO(Order order) {
orderId = order.getId();
name = order.getMember().getName();
orderDate = order.getOrderDate();
orderStatus = order.getStatus();
address = order.getDelivery().getAddress();
order.getOrderItems().stream().forEach(o -> o.getItem().getName());
orderItems = order.getOrderItems();
}
}
DTO에서 뎁스를 변경해도 된다. 굳이 item을 또 DTO만들어서 하기 보단 orderItemDTO에서 꺼내서 만들면 된다.
@GetMapping("/api/v2/orders")
public List<OrderDTO> ordersV2() {
List<Order> orders = orderRepository.findAll(new OrderSearch());
List<OrderDTO> collect = orders.stream()
.map(OrderDTO::new)
.collect(Collectors.toList());
return collect;
}
@Getter
static class OrderDTO {
private Long orderId;
private String name;
private LocalDateTime orderDate;
private OrderStatus orderStatus;
private Address address;
private List<OrderItemDTO> orderItems;
public OrderDTO(Order order) {
orderId = order.getId();
name = order.getMember().getName();
orderDate = order.getOrderDate();
orderStatus = order.getStatus();
address = order.getDelivery().getAddress();
orderItems = order.getOrderItems().stream()
.map(OrderItemDTO::new)
.collect(Collectors.toList());
}
}
@Getter
static class OrderItemDTO {
private String itemName;
private int orderPrice;
private int count;
public OrderItemDTO(OrderItem orderItem) {
itemName = orderItem.getItem().getName();
orderPrice = orderItem.getTotalPrice();
count = orderItem.getCount();
}
}
SQL이 몇번 실행될까?