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

隐藏mapstruct中未映射的属性

汝繁
2023-03-14

我正在使用DTO对象从spring rest控制器中的@RequestBody中检索信息,并在json响应中使用相同的DTO对象。我想完全隐藏一些字段不让响应。

我尝试了@BeanMapping(ignoreByDefault=true),它为未映射的属性返回null,但我的问题是:

public Class Order {
private Long id;
private String name;
private String otherField;
}

public Class OrderDto {
private Long id;
private String name;
private String otherFieldA
private String otherFieldB;
}

@Mapper
public interface OrderMapper

//..

@Mappings({
  @Mapping(target = "id", source ="id"),
  @Mapping(target = "name", source ="name"),
  @Mapping(target = "otherFieldA", source ="otherField")
  })
@BeanMapping(ignoreByDefault = true)
OrderDto fieldAOnlyOrderToOrderDtoMapper(Order order);


@Mappings({
  @Mapping(target = "id", source ="id"),
  @Mapping(target = "name", source ="name"),
  @Mapping(target = "otherFieldB", source ="otherField")
  })
@BeanMapping(ignoreByDefault = true)
OrderDto fieldBOnlyOrderToOrderDtoMapper(Order order);

}
    null

FieldBonlyOrderToOrderToMapper

将返回一个OrderDto对象,该对象没有名为(otherFiledA)的字段

共有1个答案

太叔志尚
2023-03-14

要忽略特定字段得IIUC..是这样做的:

@Mapper
public interface OrderMapper

//..

@Mapping(target = "otherFieldA", source ="otherField")
@Mapping(target = "otherFieldB", ignore=true")
OrderDto fieldAOnlyOrderToOrderDtoMapper(Order order);


@Mapping(target = "otherFieldA", ignore=true)
@Mapping(target = "otherFieldB", source ="otherField")
OrderDto fieldBOnlyOrderToOrderDtoMapper(Order order);

}
 类似资料:
  • 我正在使用MapStruct和在我的代码中的不同业务用例之间共享的大模型(超过50个字段)。根据入口点的不同,有些属性将被映射,有些则不被映射。当我构建我的项目时,我总是会得到“警告:未映射的目标属性”消息。 我已经研究过,并且看到可以通过使用语义命令来告诉mapstruct忽略该字段 问题是,给定我的对象具有如此多的字段,忽略每个映射器类中的每个属性将需要大量的代码。我也不想在我的日志上出现这个

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

  • “”“@Data@Builder(toBuilder=true)@allargsconstuctor@noargsconstuctor public class ServiceAddress{private String addLine1;private String addLine2;private String city;private String state;private String

  • 映射器类如下所示:

  • 有几种方法可以忽略mapstruct中未映射的目标属性。 对于特定方法,我们可以列出要忽略的所有属性: 是否有一种方法可以混合这些方法并忽略方法级别的所有属性,而无需明确列出所有属性?

  • 问题内容: 我正在使用MapStruct库映射对象,但出现此错误: 无法将属性“ java.util.Date aDate”映射到“ javax.xml.bind.JAXBElement ADATE”。考虑声明/实现一个映射方法:“ javax.xml.bind.JAXBElement map(java.util.Date value)”。 我的问题:应该在哪里取消此映射方法? 问题答案: 我通过