updateWrapper.setSql("turnover = turnover + " + dto.getMoney());,解决 BigDecimal 类型字段报错没有默认值的问题,如果字段为空就取dto.getMoney(),不为空就加
时间: 2023-12-03 13:42:49 浏览: 83
Excel模板杜邦分析图表.zip
可以按照以下方式来解决该问题:
```java
BigDecimal turnover = Optional.ofNullable(entity.getTurnover()).orElse(BigDecimal.ZERO);
turnover = turnover.add(dto.getMoney());
updateWrapper.set("turnover", turnover);
```
上述代码中,我们首先使用 `Optional.ofNullable()` 方法将 `entity.getTurnover()` 的返回值封装为一个 `Optional` 对象,如果 `entity.getTurnover()` 返回的是 `null`,则 `Optional` 对象的值为空。接着,我们使用 `orElse()` 方法,如果 `Optional` 对象的值为空,则返回 `BigDecimal.ZERO`,否则返回 `entity.getTurnover()` 的值。最后,我们使用 `add()` 方法将 `dto.getMoney()` 加上 `turnover` 的值,并将结果赋值给 `turnover`。最后,我们使用 `set()` 方法将 `turnover` 的值设置到 `updateWrapper` 中。
这种方式可以避免直接对 `entity.getTurnover()` 的返回值进行操作,避免了空指针异常和数据库报错的问题。
阅读全文