MapStruct不映射某些属性

时间:2017-01-04 13:44:53

标签: java mapstruct

Mapstruct会在编译阶段抛出下一个错误:

  

ConfigsMapperImpl不是抽象的,也不会覆盖抽象   方法toConfigs(ConfigsDTO)

同时,MapStruct可以很好地为所有其他方法生成代码。

我想这是因为Config对象的字段多于ConfigsDTO

@Mapper
public interface ConfigsMapper {

    ConfigsMapper INSTANCE = Mappers.getMapper(ConfigsMapper.class);

    ConfigsDTO ConfigsToConfigsDTO(Configs configs);

    List<ConfigsDTO> toConfigsDTOs(List<Configs> configs);

    @InheritInverseConfiguration
    Configs toConfigs(ConfigsDTO configsDTO);
}

1 个答案:

答案 0 :(得分:3)

在生成的方法实现中,源类型(例如Configs)中的所有可读属性将被复制到目标类型中的相应属性中(例如ConfigsDTO)。如果属性在目标实体中具有不同的名称,则可以通过@Mapping批注指定其名称。

注释@Mappings定义源中的哪些属性将传输到目标中的特定属性。注释定义了要完成的@InheritInverseConfiguration逆映射。

例如:

@Mapper
public interface ConfigsMapper {
    ConfigsMapper INSTANCE = Mappers.getMapper(ConfigsMapper.class);

    @Mappings({ 
        @Mapping(source = "configs1", target = "configsDTO1"),
        @Mapping(source = "configs2", target = "configsDTO2"),
        @Mapping(target = "somethingElse", constant="somethingElseOnDTO")
    })
    ConfigsDTO ConfigsToConfigsDTO(Configs configs);

    @InheritInverseConfiguration
    Configs toConfigs(ConfigsDTO configsDTO);
}