我正在开发一个SpringBoot项目。
我有一个Car
模型班:
public class Car {
private String plateNumber;
private CarType type;
private String brand
}
有一个CarType
枚举:
public enum CarType {
HATCH_BACK, SEDAN, SUV
}
在我的DTO层中,有一个CarDTO
类:
public class CarDTO {
private String plateNumber;
private String type;
private String brand
}
(Car
和CarDTO
之间的唯一区别是,在CarDTO
中,type
属性是String
,而在Car
中,{ {1}}属性是type
)。
在Controller中,我在请求有效负载中获得了CarDTO列表:
CarType
我想从List<CarDTO> carsFromReq = request.getCars();
中抽出List<Car>
,如何用Java8流API实现这一目标?
答案 0 :(得分:0)
在CarDTO中创建一个全参数构造函数。
您可以对所有参数构造函数使用lombok的@AllArgsConstructor
。
然后在.map()
中创建CarDTO对象
List<CarDTO> carsFromReq = request.getCars().stream()
.map(car-> new CarDTO(car.getPlateNumber(),car.getType().name(),car.getBrand()))
.collect(Collectors.toList());
答案 1 :(得分:0)
尝试使用MapStruct。它静态生成映射器实现,因此您不必手动映射每个字段。
CarDTO dto = CarMapper.INSTANCE.map(car);
// ...
Car car2 = CarMapper.INSTANCE.map(dto);
// ...
List<Car> cars = CarMapper.INSTANCE.mapDtos(dtos);
// ...
List<CarDTO> dtos = CarMapper.INSTANCE.map(cars);
然后您可以使用它,如下所示:
Azure Build Pipeline
注意: 实际上,MapStruct官方网站上的示例与您的网站非常相似。