当前位置: 首页 > 知识库问答 >
问题:

作为Spring框架转换器的MapStruct映射器-可能的习惯用法?

晁绍辉
2023-03-14

我想将MapStruct映射器与Spring的转换模型结合起来。因此,我将每个映射器接口声明为Spring的转换器的扩展:

@Mapper
public interface CarMapper extends Converter<Car, CarDto> {    
    @Override
    CarDto convert(Car car);    
}
class CarWarehouse {
    @Autowired
    private ConversionService conversionService;

    ...

    public CarDto getCarInformation(Car car) {
        return conversionService.convert(car, CarDto.class);
    }
}
@Mapper(uses=ConversionService.class)
public interface ParentMapper extends Converter<Parent, ParentDto>
@Mapper(uses={ChildMapper1.class, ChildMapper2.class, ChildMapper3.class})
public interface ParentMapper extends Converter<Parent, ParentDto>

有没有办法做到这一点?

编辑

既然提出了这个问题,假设我有一个如上定义的Carmapper,类型CARCardto分别具有WheelWheeldto类型的属性Wheel。然后我希望能够像这样定义另一个映射器:

@Mapper
public interface WheelMapper extends Converter<Wheel, WheelDto> {    
    @Override
    WheelDto convert(Wheel wheel);    
}
@Mapper(uses = WheelMapper.class)
public interface CarMapper extends Converter<Car, CarDto>
@Component
public class CarMapperImpl implements CarMapper {
    @Autowired
    private ConversionService conversionService;
    @Override
    public CarDto convert(Car car) {
        CarDto carDto = new CarDto();
        carDto.setWheel(conversionService.convert(car.getWheel(), WheelDto.class);
        return carDto;
    }
}

共有1个答案

范承志
2023-03-14

我问这个问题已经有一年多了,但是现在我们在MapStruct项目内部找到了一个答案--MapStruct Spring Extensions项目。

项目中提供了Carmapper示例。

 类似资料:
  • 是否可能在MapStruct中使用不同的映射器?我有这个映射器 是否可以将此实现更改为MapStruct?

  • 我想实现我自己的并使用Mapstruct将记录映射到POJO。我不太明白如何完成这一点。我遵循了这部分文档:https://www.jooq.org/doc/3.13/manual/sql-execution/fetching/pojos-with-recordmapper-provider/ 我的映射器看起来像这样: 问题是,作为我实际上并没有得到,而是我的语言表中的,因此无法将转换为。知道我需

  • 我正在使用Spring,并且在我的项目中从mapstruct库开始,所以我有了一个想法,为@mapper(componentModel=“Spring”)创建原型注释,比如@springmapper。但它不会生成任何映射器。 是不可能还是我做错了什么?

  • 我是Mapstruct的新手。我试图将列表转换为地图,我在网上搜索了很多,我有一些解决方案,比如它还没有在mapstruct中实现。如果有人能提供一些替代解决方案,我将很高兴。所有我希望转换映射如下: 现在是否可以使用MapStruct来实现?

  • 我目前正在用Spring componentModel设置一个MapStruct映射器,到目前为止一切都很好,各个子映射器可以按照预期进行自动注入。但是,在加载ApplicationContext时,使用修饰映射器会导致以下失败: 创建名为“Example MapperImpl”的bean时出错:通过构造函数参数0表示不满足的依赖关系;嵌套异常是org.springframework.beans.

  • 我有麻烦映射一个嵌套dto字段正确与MapStruct。我有几个DTO: 具有相应的映射器 到目前为止,一切工作都很好,生成的代码自动连接其他需要的映射器来正确地构建DTO。例如生成的仪器映射器实现 现在,当我试图创建一个包含嵌套工具dto的映射器时遇到了麻烦。映射器应使用instrumentMapper正确创建所需的dto。DTO: 映射器: 生成的代码: 现在media mapper得到了很好