DTO
public class TradeDTO {
private String tradeId;
private List<OrderDTO> orders;
}
public class OrderDTO {
private String orderId;
private String pickingId;
private String warehouse;
}
Entity
public class Trade {
private String tradeId;
private List<Order> orders;
}
public class Order {
private String orderId;
private Picking picking;
}
public class Picking {
private String pickingId;
private String warehouse;
}
说明:Entity 的 Order 和 Picking 存在一对一的关系,但是在传输层,合并为一个 OrderDTO 对象,需要实现 DTO 向 Entity 的转换,mapstruct 部分代码如下:
public interface Converter {
/** 转换入口函数 */
Trade toEntity(TradeDTO dto);
/**
* 这里自定义的函数接口, 目的是把 OrderDTO 转换为 一对一的 Order 和 Picking
* 函数名的格式为: 传入类型 + To + 返回类型 的小驼峰格式
*/
@Mapping(target = "picking.", source = ".")
Order orderDTOToOrder(OrderDTO orderDTO);
/** Entity 转 DTO 跟上面的反向操作就可以 */
TradeDTO toDto(Trade trade);
@Mapping(target = ".", source = "picking.")
OrderDTO orderToOrderDTO(Order order);
}