我有车:
还有CarDTO:
在我的服务类中,我传递附加参数“所有者”,我需要转换列表。
是否可以向Mapper添加“所有者”?
如果是,那么我想它应该与此类似(不起作用)。
@Mapper
public interface CarMapper {
@Mapping(target = "owner", source = "owner")
List<Car> mapCars(List<CarDTO> cars, String owner);
}
如答案中所述,您可以使用
@Context
。
首先添加单个对象映射方法:
@Maping(target = "owner", source = "owner")
Car mapCar(CarDTO car, String owner);
然后定义一个方法来映射对象列表
@Context
:
List<Car> mapCars(List<CarDTO> cars, @Context String owner);
因为
参数并不意味着用作源 参数,应该添加一个代理方法来将MapStruct指向 正确的单一对象映射方法使其工作。@Context
最后添加代理方法:
default Car mapContext(CarDTO car, @Context String owner) {
return mapCar(car, owner);
}
是的,这是可能的。您可以尝试在“owner”之前添加
@Context
注释
我会建议这样的事情:
@Mapper
public interface CarMapper {
@Maping(target = "owner", source = "owner")
Car mapCar(CarDTO car, @Context String owner);
@Maping(target = "owner", source = "owner")
List<Car> mapAllCars(List<CarDTO> cars, @Context String owner);
@AfterMapping
default void afterMapping(@MappingTarget Car target, @Context String owner) {
target.setOwner(owner);
}
有多种方法可以解决您的问题。您还可以查看将附加参数传递给 MapStruct 映射器
我什至不需要使用上下文。我可以简单地传递附加参数,映射器会在构建中识别它。
NotMORV2Entity toNotMorV2Entity(ReEntity reEntity, int glAccountTypeId);