ProjectController我使用下面编写的类的逻辑:
@RestController
@RequestMapping("/project")
public class ProjectController {
@Autowired
ProjectRepository projectRepository;
@Autowired
ProjectService projectService;
ProjectAdaptor projectAdaptor = new ProjectAdaptor();
/**
* Logger declaration for knowing the flow of execution for debugging
*/
private static final Logger logger = LoggerFactory.getLogger(ProjectController.class);
@GetMapping("/projects")
@Operation(summary = "Get list of all projects")
public ResponseEntity<List<ProjectDTO>> findAllProjects() {
logger.info("findAllProjects() is calling...");
List<ProjectDTO> projectList = projectService.findAllProducts();
if (projectList.isEmpty()) {
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
return new ResponseEntity<>(projectList, HttpStatus.OK);
}
@GetMapping(value = "/{companyId}")
@Operation(summary = "Get list of projects from database based on companyId")
public @ResponseBody List<ProjectDTO> findAllProjects(@PathVariable("companyId") String companyId,
HttpServletRequest req) throws ErrorHandling {
logger.info("findAllProjects() is calling : ");
Long longCompanyId = Long.parseLong(companyId);
List<Project> projectList = projectService.getAllProjects(longCompanyId);
logger.info("findAllProjects ProjectList : " + projectList);
if (projectList != null && !projectList.isEmpty()) {
return projectAdaptor.databaseModelToUiDtoList(projectList);
} else {
throw new ErrorHandling("Project data not present.");
}
}
@PostMapping
@Operation(summary = "Add new project")
public ResponseEntity<ProjectDTO> addProject(@RequestBody Project project) {
logger.info("addProject() is calling...");
if (project != null) {
ProjectDTO projectDTO = projectAdaptor.databaseModelToUiDto(project);
Project entity = projectRepository.save(projectDTO);
return new ResponseEntity<>(entity, HttpStatus.OK);
}
return new ResponseEntity<>(new ProjectDTO("","",""), HttpStatus.BAD_REQUEST);
}
@PutMapping
@Operation(summary = "Updating project")
public ResponseEntity<ProjectDTO> updateById(@RequestBody Project project) {
logger.info("updateById() is calling...");
if (project != null) {
projectRepository.save(project);
return new ResponseEntity<>("Updated successfully.", HttpStatus.OK);
}
return new ResponseEntity<>(new ProjectDTO("","",""), HttpStatus.BAD_REQUEST);
}
@DeleteMapping
@Operation(summary = "Deleting project")
public ResponseEntity<ProjectDTO> deleteById(@PathVariable("id") Long id) {
logger.info("deleteById() is calling...");
Optional<Project> project = projectRepository.findById(id);
if (project.isPresent()) {
projectRepository.deleteById(id);
return new ResponseEntity<>("Successfully deleted.", HttpStatus.OK);
}
return new ResponseEntity<>(new ProjectDTO("","",""), HttpStatus.BAD_REQUEST);
}
}
如何重构 add 方法时出现问题:
@PostMapping
@Operation(summary = "Add new project")
public ResponseEntity<ProjectDTO> addProject(@RequestBody Project project) {
logger.info("addProject() is calling...");
if (project != null) {
ProjectDTO projectDTO = projectAdaptor.databaseModelToUiDto(project);
Project entity = projectRepository.save(projectDTO);
return new ResponseEntity<>(entity, HttpStatus.OK);
}
return new ResponseEntity<>(new ProjectDTO("","",""), HttpStatus.BAD_REQUEST);
}
问题是在保存Entity到DTO. 如果是这样,将它放在输入参数中会不会有问题,Entity还是为此重写逻辑更好?
我将非常感谢你在这件事上的帮助。
如有必要,我也准备提供任何有助于解决此问题的其他信息。

结果解决方案: