我有两个对象源和目标,它们具有相同的字段名称和类型。
如果源字段为空,我希望目标为“”(空字符串)
我的接口映射看起来像这样(这只是两个字段,我有很多)
@Mapper(componentModel = "spring", nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT)
public interface MyMapper {
@Mappings({
@Mapping(target="medium", defaultExpression="java(\"\")"),
@Mapping(target="origin", defaultExpression="java(\"\")")
})
public Target mapFrom(Source source)
Run Code Online (Sandbox Code Playgroud)
如果源有一个值,则应将其复制,如果源中为空,则在目标中应为“”。
Mapstruct-1.3.0 似乎只是将所有内容保留为空。
任何想法?我希望所有内容都默认为空字符串
您需要设置NullValuePropertyMappingStrategy(作为注释的一部分Mapper)来定义如何映射空属性。
请参阅NullValuePropertyMappingStrategy.html#SET_TO_DEFAULT
String的默认值为""。您不需要明确定义它。
因此,您的映射器可以简单地如下所示:
@Mapper(
componentModel = "spring",
nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT,
nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.SET_TO_DEFAULT
)
public interface MyMapper {
public Target mapFrom(Source source);
}
Run Code Online (Sandbox Code Playgroud)