我正在使用DTO对象从Spring Rest控制器中的@RequestBody中检索信息,并在json响应中使用相同的DTO对象。我想完全隐藏一些字段来回应。
我尝试了@BeanMapping(ignoreByDefault = true)
which为未映射的属性返回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);
}
fieldAOnlyOrderToOrderDtoMapper
将返回一个没有命名属性的OrderDto对象(otherFieldB)
fieldBOnlyOrderToOrderDtoMapper
将返回一个没有命名字段的OrderDto对象(otherFiledA)
你想忽略特定字段的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);
}