Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc CRUD JDBC模板存在删除操作问题_Spring Mvc_Crud_Spring Jdbc_Jdbctemplate_Http Delete - Fatal编程技术网

Spring mvc CRUD JDBC模板存在删除操作问题

Spring mvc CRUD JDBC模板存在删除操作问题,spring-mvc,crud,spring-jdbc,jdbctemplate,http-delete,Spring Mvc,Crud,Spring Jdbc,Jdbctemplate,Http Delete,我对CRUD删除操作有问题。当我在jsp文件 这是我的DeleteController(如果我在doGet中键入了一些内容,那么我将从中获得结果,而不是空白页) 从MedicineService删除功能(我想这是我的问题) 和药物 private final static String DELETE_MEDICINES = "DELETE FROM medicines WHERE id_medicines=:id_medicines;"; @Override public voi

我对CRUD删除操作有问题。当我在jsp文件

这是我的DeleteController(如果我在doGet中键入了一些内容,那么我将从中获得结果,而不是空白页)

从MedicineService删除功能(我想这是我的问题

和药物

private final static String DELETE_MEDICINES = 
      "DELETE FROM medicines WHERE id_medicines=:id_medicines;";
@Override
public void delete(Medicines medicines) {
    SqlParameterSource namedParameter = new MapSqlParameterSource("Id", medicines.getId());
    template.update(DELETE_MEDICINES, namedParameter);
}
新错误

medicinesDao.delete(medicines); < MedicicinesService:41
template.update(DELETE_MEDICINES, namedParameter); < MedicinesDAOImpl:77
query.delete(id); <MedicinesDeleteController:31


       Type Exception Report

        Message No value supplied for the SQL parameter 'id_medicines': No value registered for key 'id_medicines'

        Description The server encountered an unexpected condition that prevented it from fulfilling the request.

        Exception

        org.springframework.dao.InvalidDataAccessApiUsageException: No value supplied for the SQL parameter 'id_medicines': No value registered for key 'id_medicines'
            org.springframework.jdbc.core.namedparam.NamedParameterUtils.buildValueArray(NamedParameterUtils.java:355)
            org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.getPreparedStatementCreator(NamedParameterJdbcTemplate.java:398)
            org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.getPreparedStatementCreator(NamedParameterJdbcTemplate.java:370)
            org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:317)
            pl.firstaidkit.dao.MedicinesDAOImpl.delete(MedicinesDAOImpl.java:77)
            pl.firstaidkit.dao.MedicinesDAOImpl.delete(MedicinesDAOImpl.java:1)
            pl.firstaidkit.service.MedicinesService.delete(MedicinesService.java:41)
            pl.firstaidkit.controller.MedicinesDeleteController.doPost(MedicinesDeleteController.java:31)
            javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
            javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
            org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
            pl.firstaidkit.filter.LoginFilter.doFilter(LoginFilter.java:26)
        Note The full stack trace of the root cause is available in the server logs.
medicinesDao.删除(药品);<医疗服务:41
模板。更新(删除药物,命名参数);<药物样本:77

查询、删除(id) 最初的问题是,这将导致http get方法调用,而doGet()方法没有代码来处理相同的调用

 <a href="delete?drugid=${medicines.id}">Delete</a> 


第二个问题是MapSqlParameterSource参数名称和查询中的place holder不匹配。

当使用锚时,您正在执行HTTP get,这解释了doGet工作的原因()。要使doPost()正常工作,请使用http方法作为post进行表单提交。示例我这样做了,现在我有了这个错误
HTTP状态500–内部服务器错误类型异常报告消息null说明服务器遇到了一个意外情况,阻止它完成请求。异常java.lang.NumberFormatException:null java.lang.Integer.parseInt(未知源)java.lang.Integer.parseInt(未知源)pl.firstaidkit.controller.MedicinesDeleteController.doPost(MedicinesDeleteController.java:28)
这是28行
int-id=Integer.parseInt(request.getParameter(“id”)
是参数名
drugid
id
?。请使用对post
new MapSqlParameterSource(“Id”,medicines.getId())所做的表单更改更新问题
应该是
新的MapSqlParameterSource(“id_medicines”,medicines.getId())@我更改了,所以现在它是
Id
。问题已更新,但出现新错误
medicinesDao.delete(medicines); < MedicicinesService:41
template.update(DELETE_MEDICINES, namedParameter); < MedicinesDAOImpl:77
query.delete(id); <MedicinesDeleteController:31


       Type Exception Report

        Message No value supplied for the SQL parameter 'id_medicines': No value registered for key 'id_medicines'

        Description The server encountered an unexpected condition that prevented it from fulfilling the request.

        Exception

        org.springframework.dao.InvalidDataAccessApiUsageException: No value supplied for the SQL parameter 'id_medicines': No value registered for key 'id_medicines'
            org.springframework.jdbc.core.namedparam.NamedParameterUtils.buildValueArray(NamedParameterUtils.java:355)
            org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.getPreparedStatementCreator(NamedParameterJdbcTemplate.java:398)
            org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.getPreparedStatementCreator(NamedParameterJdbcTemplate.java:370)
            org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:317)
            pl.firstaidkit.dao.MedicinesDAOImpl.delete(MedicinesDAOImpl.java:77)
            pl.firstaidkit.dao.MedicinesDAOImpl.delete(MedicinesDAOImpl.java:1)
            pl.firstaidkit.service.MedicinesService.delete(MedicinesService.java:41)
            pl.firstaidkit.controller.MedicinesDeleteController.doPost(MedicinesDeleteController.java:31)
            javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
            javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
            org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
            pl.firstaidkit.filter.LoginFilter.doFilter(LoginFilter.java:26)
        Note The full stack trace of the root cause is available in the server logs.
 <a href="delete?drugid=${medicines.id}">Delete</a>