List<OrderItem> orderItems = order.getOrderItems();
orderItems.stream().forEach(o -> o.getItem().getName());
List<Order> orders = orderRepository.findAllWithMemberDelivery();
List<SimpleOrderDto> result = orders.stream()
.map(o -> new SimpleOrderDto(o))
.collect(Collectors.toList());
@Data
static class SimpleOrderDto {
private Long orderId;
private String name;
private LocalDateTime orderDate;
private OrderStatus orderStatus;
private Address address;
public SimpleOrderDto(Order order) {
orderId = order.getId();
name = order.getMember().getName();
orderDate = order.getOrderDate();
orderStatus = order.getStatus();
address = order.getDelivery().getAddress();
}
}
- stream 에서
map
을 사용하여 타입을 변경시킬 수 있다.
- 위의 예제에서는
Order
객체를 SimpleOrderDto
객체로 변환해 주기 위해서 map
을 사용했다.
- 그리고
collect
를 사용해서 변환된 객체들을 하나의 리스트로 모아 준다.
- 참고로
map(o -> new SimpleOrderDto(o))
은 map(SimpleOrderDto::new)
와 같은 의미이다.