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

Mapstruct映射器扩展

高宏峻
2023-03-14

Hi这似乎适用于添加额外的方法,但不适用于在现有方法上添加新的注释。假设我们有以下课程:

public class SourceClass {
    private String field_1;
    private String field_2;
}

public class TargetParent {
    private String field_a;
}

public class TargetChild extends TargetParent {
    private String field_b;
}
@Mapper
public interface ParentMapper {
    @Mapping(source="field_1", target="field_a")
    public TargetParent convert(SourceClass source);
}

@Mapper
public interface ChildMapper extends ParentMapper {
    @Mapping(source="field_2", target="field_b")
    public TargetChild convert(SourceClass source);
}
public TargetChild convert(SourceClass source){
    // target instanciation through factory here
    target.setField_a(field_1);
    target.setField_b(field_2);
}

共有1个答案

华知
2023-03-14

如果您想要继承某些注释,您应该使用映射、配置、继承。

例如。

@Mapper
public interface ParentMapper {
    @Mapping(source="field_1", target="field_a")
    public TargetParent convert(SourceClass source);
}

@Mapper(config = ParentMapper.class)
public interface ChildMapper {
    @Mapping(source="field_2", target="field_b")
    @InheritConfiguration
    public TargetChild convert(SourceClass source);
}
 类似资料:
  • 我有麻烦映射一个嵌套dto字段正确与MapStruct。我有几个DTO: 具有相应的映射器 到目前为止,一切工作都很好,生成的代码自动连接其他需要的映射器来正确地构建DTO。例如生成的仪器映射器实现 现在,当我试图创建一个包含嵌套工具dto的映射器时遇到了麻烦。映射器应使用instrumentMapper正确创建所需的dto。DTO: 映射器: 生成的代码: 现在media mapper得到了很好

  • 假设我需要将两个对象映射成一个或一个对象映射成一个(重载)。我可以通过以下映射来实现: 是否有一种方法可以更改第二个映射器“先做第一个映射器”,然后应用的附加映射?

  • 关于MapStruct的问题。我有这样的情况,我从基实体扩展类,但不知道如何映射它。这是我的箱子。 BaseEntity: 基础: 没有显示错误,在映射器实现(生成的代码)中没有该ID的映射:

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

  • 我试图使用MapStruct在dto和实体对象之间映射convert,但是生成的映射器实现只返回空的映射对象。 BeermapperImpl 任何人都可以提供我的代码可能出错的地方?谢谢!

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