如何在Builder链式返回中用StringUtils.isNotBlank判断apr/aprType非空赋值
解决方案
要实现仅当apr和aprType字段非空时才更新实体值,同时不在return语句中使用if语句,可以利用三元运算符结合StringUtils.isNotBlank()完成条件赋值,在链式调用中直接判断并选择赋值内容:
修改后的代码如下:
import org.apache.commons.lang3.StringUtils; public WfccApplicationEntity constructApplicationEntity( UpdateWfccApplicationDecisionRequest request, WfccApplicationEntity entity) { return entity.toBuilder() .statusCode(request.getStatusCode()) .caseNumber(request.getCaseNumber()) .updatedBy(request.getUpdatedBy()) // 仅当request的apr非空时更新,否则保留原实体值 .apr(StringUtils.isNotBlank(request.getApr()) ? request.getApr() : entity.getApr()) // 仅当request的aprType非空时更新,否则保留原实体值 .aprType(StringUtils.isNotBlank(request.getAprType()) ? request.getAprType() : entity.getAprType()) .statusCodeUpdatedDate(now()) .customerId(request.getCustomerId()) .build(); }
说明:
- 三元运算符
condition ? valueIfTrue : valueIfFalse替代了if逻辑:当request中的目标字段非空时,使用请求的新值;否则保留原entity中的旧值,避免空值覆盖原有有效数据。 - 原代码中重复调用的
.statusCodeUpdatedDate(now())已去除重复项,避免不必要的重复赋值。
内容的提问来源于stack exchange,提问作者Varsha Jadhav
相关产品推荐
相关产品推荐

