如何在使用目标和表达式时对@Mapper进行空检查?

问题描述 投票:0回答:1

我想执行空检查,因为在这个映射器类的实现过程中,如果值为空,它将抛出异常。

@Mapping(target = "rotorSpeed", expression = "java(MethodU.changeValues(BigDecimal.valueOf(motorBike.getValue1().getValue2()),motorBikeEntity.getOption1().getOption2()))")


----Method

public class MethodU {

    public static BigDecimal changeValues(BigDecimal value1 , Double value2) {
        return (value1.multiply(BigDecimal.valueOf(value2))).setScale(0, RoundingMode.HALF_UP);
    }

我们如何检查 motorBike.getValue1() !=null && motorBike.getValue1().getValue2() !=null 的值,对于我们传递表达式的所有对象都是类似的。

我尝试了 Objects.nonNull() ,它不起作用,因为它返回布尔值。即使我尝试使用 Objects.requireNonNull() 也不起作用。

如果对象为空,是否可以设置默认值?

java spring spring-boot spring-mvc
1个回答
0
投票

正如多次提到的,您的选择是

  1. 在表达式本身中进行空检查(有点不可读,不建议)
  2. 创建一个 java 方法,该方法接受摩托车并提供默认值(如果为 null)。可以在您的映射器接口类中定义它。
  3. 在changesValue()方法中进行null检查。
  4. 不要让 getValue2() 通过编码返回空值,以便在未设置时返回值。
  5. 不要使用 Lombok 等工具为 value2 设置默认值,让 getValue2() 返回空值
  6. 不要让 getValue2() 返回
    Optional<Int>
    值来返回空值。
© www.soinside.com 2019 - 2024. All rights reserved.