以下代码是大型项目的一部分。
概述是我正在尝试使用Spring MVC访问数据库。我想根据请求更新字段,并发送有关数据库发回的值的响应。
代码:
@Override
@Transactional
public EmployeeResponse update(EmployeeRequest employeeRequest) {
Employee emp = new Employee();
UUID empId = UUID.fromString(employeeRequest.getId());
Employee foundEmployee = employeeRepository.findOne(empId);
if (foundEmployee != null) {
foundEmployee.setAddress(employeeRequest.getAddress());
// similarly set 4 fields of foundEmployee
emp = employeeRepository.save(foundEmployee);
}
EmployeeResponse response = new EmployeeResponse();
response.setAddress(emp.getAddress());
// similarly set 4 fields of response
return response;
}
我发现没有new Employee()
为之foundEmployee
有为emp
。我不确定,但是我认为这会导致异常。我对么?
另外,请告诉我什么时候应该抛出什么异常foundEmployee
的null
。
附加信息-这是帮助显示的内容:
org.springframework.data.repository.CrudRepository
public T findOne(ID id)
Retrieves an entity by its id.
Parameters:
id - must not be null.
Returns:
the entity with the given id or null if none found
Throws:
IllegalArgumentException - if id is null
在行中
Employee foundEmployee = employeeRepository.findOne(empId);
我们可以假设EmployeeRepository.findOne()
它将返回的实例Employee
。这不会导致编译器错误,并且如果在运行时发生异常,则该异常将在内部findOne()
。
关于在发生时应采取的措施null
foundEmployee
,这实际上是您必须做出的设计决定。一种选择是null
让方法返回,让消费者知道EmployeeRequest
传入的方法存在严重问题。
另一种选择是创建您自己的Exception
,然后在的情况下将其抛出null
foundEmployee
。
更新:
鉴于您需要将某些内容传递回您的UI,另一种选择是创建一个空EmployeeReponse
对象并返回该对象:
EmployeeResponse response = new EmployeeResponse();
response.setAddress(null);
response.setName(null);
确保您的框架可以将null
值编组为用户友好的内容,例如,所有字段为空字符串。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句