朋友们,
这是我的Java对象
@Data
public class CarDto {
private String make;
private String model;
private int year;
}
@Data
public class Car {
private MakeEnum make;
private String model;
private int year;
}
对于消费,我需要这样做
@Mapper
public interface CarMapper {
CarMapper INSTANCE = Mappers.getMapper(CarMapper.class);
Car toModel(CarDto carDto);
CarDto toDto(Car carModel);
}
// Using mapper
Car carModel = CarMapper.INSTANCE.toModel(carDto);
但我正在寻找一个解决方案,我可以做到这一点:
Car carModel = Mapper.map(carDto, Car.class);
如何做到这一点?没有找到一个例子,我可以动态Map的基础上类型。我发现这个方法非常方便,在ModelMapper
和谷歌gson
。感谢您的帮助!
2条答案
按热度按时间5tmbdcev1#
如果我没理解错的话,你需要一种回购协议。
另一个选择是查看sprint和最近开发的新MapStruct spring集成:https://github.com/mapstruct/mapstruct-spring-extensions。它是作为此question的后续设计的。
在示例repo中有一个例子,但并不简单:https://github.com/mapstruct/mapstruct-examples/tree/master/mapstruct-mapper-repo
vx6bjr1n2#
在调用Map之前,您必须像这样设置和连接MapStruct:
那么它的一个实现就是:
然后,您只需要在控制器中注入这个接口,并调用存储库,如下所示:
当然,您可以调用service/serviceImpl,而不是直接调用存储库,但它必须尽可能简单。:)