我有两个具有相同字段名称和类型的对象源和目标。
如果源字段为空,我希望目标为“”(空字符串)
我的接口映射如下(这只是两个字段,我有很多)
@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)
如果Source中有一个值,则应将其复制过来;如果Source中的值为null,则在目标中应为“”。
Mapstruct-1.3.0似乎只是将所有内容保留为空。
有什么想法吗?我希望所有内容默认为空字符串
答案 0 :(得分: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);
}