gpt4 book ai didi

java - Mapstruct:当源为空时如何将目标字符串默认为空字符串(两个字段具有相同的名称和类型)Java/Spring

转载 作者:太空宇宙 更新时间:2023-11-04 09:31:11 25 4
gpt4 key购买 nike

我有两个对象源和目标,它们具有相同的字段名称和类型。

如果源字段为空,我希望目标为“”(空字符串)

我的接口(interface)映射如下所示(这只是两个字段,我有很多)

@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)

如果源有一个值,则应将其复制,如果源中该值为 null,则在目标中应为“”。

Mapstruct-1.3.0 似乎只是将所有内容保留为空。

有什么想法吗?我希望所有内容都默认为空字符串

最佳答案

您需要设置 NullValuePropertyMappingStrategy(作为 Mapper 注释的一部分)来定义如何映射 null 属性。

参见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);

}

关于java - Mapstruct:当源为空时如何将目标字符串默认为空字符串(两个字段具有相同的名称和类型)Java/Spring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57077333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com