【问题标题】:MapStruct: How to set default value only if source value is not null?MapStruct:仅当源值不为空时如何设置默认值?
【发布时间】:2022-12-13 17:36:09
【问题描述】:

通常 MapStruct 仅在源字段不是null时才设置目标字段。但是,如果将 @Mappingconstant 一起使用,则生成的代码无论如何都会设置目标字段。我希望 MapStruct 仅在源字段不为空时设置目标字段,然后设置为常量值。
我目前最好的猜测是使用 qualifiedByName 子句,如下所示:

@Mapping(target = "targetField", source = "sourceField", qualifiedByName = METHOD_NAME) 

和定义的方法:

@Named(METHOD_NAME)
static String mapTargetField(String sourceField) {
    if (sourceField!= null) {
        return CONSTANT;
    }
    return null;
}

对于这个简单的概念,有人知道更短的方法吗?

【问题讨论】:

  • 您可以使用表达式。

标签: java mapstruct


【解决方案1】:

使用表达式和三元运算符可以实现更短的方法:

@Mapping(target = "targetField", expression = "java(null == source.getField() ? CONSTANT : source.getField())")

但是,缺点是重构可能更加困难。每次更改字段名称和相关 getter 时都需要小心。

我更喜欢你的方法,它是集中的,你可以很容易地改变行为。

【讨论】:

    猜你喜欢
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    相关资源
    最近更新 更多