gpt4 book ai didi

java - 如何在 Hibernate 中使用 REST API 删除多条记录

转载 作者:行者123 更新时间:2023-12-04 14:06:37 28 4
gpt4 key购买 nike

你好我是 Spring Boot 的新手,我已经开发了 API 来通过 ID 获取、创建和删除单个记录,现在我想发出删除选定的多条记录的请求。示例:我喜欢在单个请求中删除 10 条记录中的 4 条记录,而不是发出 4 次删除请求。

项目 Controller .java

@Qualifier("projectServiceImpl")
@Autowired
private ProjectService projectService;

@Autowired
private MapValidationErrorService mapValidationErrorService;

@PostMapping("")
public ResponseEntity<?> createNewProject(@Valid @RequestBody Project project, BindingResult result){

ResponseEntity<?> errorMap = mapValidationErrorService.MapValidationService(result);
if(errorMap!=null) return errorMap;

Project project1 = projectService.saveOrUpdateProject(project);
return new ResponseEntity<Project>(project1, HttpStatus.CREATED);
}

@GetMapping("/{id}")
public ResponseEntity<?> findProjectById(@PathVariable Long id){
Project project = projectService.findProjectById(id);
return new ResponseEntity<Project>(project, HttpStatus.OK);
}

@GetMapping("")
public List<Project> getAllProjects(){return projectService.findAllProjects();}

@DeleteMapping("/{id}")
public ResponseEntity<?> deleteProject(@PathVariable Long id){
projectService.deleteProjectById(id);

return new ResponseEntity<String>("Project with id: '"+id+ "' was deleted", HttpStatus.OK);
}

ProjectServiceImpl.java

@Autowired
private ProjectRepository projectRepository;

@Override
public long count() {
return projectRepository.count();
}

public Project saveOrUpdateProject(Project project){
try{
project.setProjectNumber(project.getProjectNumber());
return projectRepository.save(project);
}catch (Exception e){
throw new ProjectNumberException("The project number "+project.getProjectNumber()+" is already existed. Please select a different project number.");
}
}

public Project findProjectById(Long id) {
return projectRepository.findById(id).orElse(null);
}

public List<Project> findAllProjects() {
return projectRepository.findAll();
}

public void deleteProjectById(Long id) {
Project project = projectRepository.findById(id).orElse(null);;
projectRepository.delete(project);
}

项目库.java

@Repository
public interface ProjectRepository extends JpaRepository<Project, Long>, QuerydslPredicateExecutor<Project> {}

最佳答案

您可以在 ProjectRepository 中添加这样的方法

@Modifying
@Query("delete from Project where id in (:ids)")
int deleteByIds(@Param("ids") List<Long> ids);

您需要一个端点来处理此类 JSON 请求

{
"ids" : [1, 2, 3]
}

关于java - 如何在 Hibernate 中使用 REST API 删除多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68097794/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com