java - 我不知道在这些位置的 else 句中还能放什么
问题描述
我可以在此方法中在没有错误或异常的情况下在 else 语句中编写什么
此代码使用 java 编写并使用 mongo db 我想从 workOrder 添加对象并检查是否为 null 并且我想检查 id 是否为 null 但如果 workOrder或者 id 为 null 我不知道我可以返回什么
public TaskDataDTO save(TaskDataDTO taskDataDTO,String WorkOrderId) {
if(WorkOrderId!=null) {
taskDataDTO.setWorkOrderId(WorkOrderId);
Optional<WorkOrderDTO> workOrderDTO=workOrderRepository.findById(WorkOrderId).map(workOrderMapper::toDto);
if(workOrderDTO!=null)
{
log.debug("Request to save TaskData : {}", taskDataDTO);
taskDataDTO.setWorkOrderDTO(workOrderDTO);
TaskData taskData = taskDataMapper.toEntity(taskDataDTO);
taskData = taskDataRepository.save(taskData);
return taskDataMapper.toDto(taskData);
}
else {
//what can i write here
}
}
else{
//what can i write here
}
}
解决方案
Spring DataCrudRepository
永远不会null
从findById(ID)
. 您将始终得到一个Optional
包含具有匹配 ID 的实体或为空的实体。我会workOrderDTO != null
完全取消支票。
如果您的save
方法需要一个非 null WorkOrderId
,我会在方法的开头断言它。例如,您可以使用java.util.Objects.requireNonNull(WorkOrderId)
这两个更改简化了您的代码,因为现在没有分支。它看起来像这样:
public TaskDataDTO save(TaskDataDTO taskDataDTO,String WorkOrderId) {
Objects.requireNonNull(WorkOrderId);
taskDataDTO.setWorkOrderId(WorkOrderId);
Optional<WorkOrderDTO> workOrderDTO=workOrderRepository.findById(WorkOrderId).map(workOrderMapper::toDto);
log.debug("Request to save TaskData : {}", taskDataDTO);
taskDataDTO.setWorkOrderDTO(workOrderDTO);
TaskData taskData = taskDataMapper.toEntity(taskDataDTO);
taskData = taskDataRepository.save(taskData);
return taskDataMapper.toDto(taskData);
}
这假设您可以taskDataDTO
处理Optional
. workOrderDTO
如果不能,您可能需要ifPresent()
检查。您可能还需要考虑传递WorkOrderDTO
到TaskDataDTO
而不是Optional<WorkOrderDTO>
.
推荐阅读
- hl7-fhir - 治疗并发症,哪些表应该存储数据
- php - 在 mysql 的 php 查询中是否有任何 msi 关键字或特殊角色?
- iphone - 如何在 Swift 中找到 iOS 应用程序内部目录的路径?
- matlab - MATLAB 绘制连续日期的数据以及特定日期的观测数据
- docker - Docker 查看历史日志
- chromium - puppeteer 不会打开没有协议的 url
- java - 在 Java 中将字符串 UUID 转换为 BigInteger
- react-native - 使反应原生 TextInput 只读
- html - 在 flex div 中设置子元素的响应宽度
- php - 如何将日期和时间字符串转换为不同的格式?