如何让 CRUD 的删除方法在 Spring 项目上工作

How to get a delete method of CRUD to work on a Spring project

在基于 Spring 的项目上处理 CRUD 删除方法时遇到一些困难。不断收到 404 错误。由于我是编程新手,所以我无法自己解决问题。我试图在各种 YouTube 指南和文章中寻求一些解决方案,试图重写,但没有任何帮助。非常感谢任何可以帮助我的人。附上处理 CRUD 的 DELETE 方法的部分代码:

服务:

public void deleteVisit(Long id) {
    repository.delete(id);
}

控制器:

@DeleteMapping("delete-appointment/{id}")
public void deleteAppointment(@PathVariable Long id) {
    dentistVisitRepository.delete(id);
}

百里香叶:

<td><a th:href="@{delete-appointment/{id}(id=${appointment.id})}">Delete</a></td>

此代码采用对象参数repository.delete(Entity)

但是这段代码带长参数使用这段代码通过id删除

  public void deleteVisit(Long id) {
    repository.deleteById(id);
}

如果你想删除entity你可以使用这个代码

  public void deleteVisit(Long id) {
   Entity entity=repository.findById(id).get();
    repository.delete(entity);
}
  1. 在控制器中你需要调用服务
@DeleteMapping("delete-appointment/{id}")
public String deleteAppointment(@PathVariable Long id) {

    //You might have to first find it before deletion to ensure there are no errors
    appointmentService.deleteVisit(id);
    return "Deleted";
}
  1. 在您从存储库调用 deleteById 的服务中
public void deleteVisit(Long id) {
    repository.deleteById(id);
}
  1. 锚标记使用的默认 HTTP 方法是 GET 您需要创建一个表单才能更改 http 方法
<form action="#" th:action="@{delete-appointment/{id}'(id=${appointment.id})}" th:method="delete" >
  <input type="hidden" name="_method" value="delete" />
  <button type="submit" id="submitButton"> </button>
</form>

如果您使用的是spring boot 2.2+,请将以下内容添加到您的application.properties

spring.mvc.hiddenmethod.filter.enabled=true

在spring boot 2.2+之后,这个隐藏的方法过滤器默认是关闭的。更多详情 check here.