java+ibatis+spring存储过程的简单问题
爱的人是你 2014-03-25 10:32:59 错误列表:
org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [0];
--- The error occurred in com/it94hao/sqlmap/onlineExam/ExamPaperSqlMap.xml.
--- The error occurred while applying a parameter map.
--- Check the examPaper.swapParameters.
--- Check the statement (update procedure failed).
--- Cause: java.lang.NullPointerException; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in com/it94hao/sqlmap/onlineExam/ExamPaperSqlMap.xml.
--- The error occurred while applying a parameter map.
--- Check the examPaper.swapParameters.
--- Check the statement (update procedure failed).
--- Cause: java.lang.NullPointerException
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:203)
at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForObject(SqlMapClientTemplate.java:268)
at com.it94hao.dao.impl.onlineExam.ExamPaperDaoImpl.delete(ExamPaperDaoImpl.java:26)
at com.it94hao.biz.impl.onlineExam.ExamPaperBizImpl.del(ExamPaperBizImpl.java:49)
at com.it94hao.action.onlineExam.ExamPaperController.deleteExamPaper(ExamPaperController.java:109)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.it94hao.filter.PowerFilter.doFilter(PowerFilter.java:65)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
<!--调用存储过程-->
<!--create proc sp_delPaper
(
@id int,
@result int out
)
as
begin
begin transaction
declare @error int =0
delete from ExamArrangement where pid=@id;
set @error =@error +@@ERROR;
delete from ThePapers where pid=@id;
set @error =@error +@@ERROR;
delete from ExamPaper where pid=@id;
set @error =@error +@@ERROR;
if(@error<>0)
begin
set @result=0;
rollBack transaction;
end
else
begin
set @result=1;
commit tran;
end
end
-->
sqlmap的配置文件
<parameterMap class="java.util.HashMap" id="swapParameters">
<parameter property="pid" javaType="java.lang.Integer" jdbcType="int" mode="IN" nullValue="0"/>
<parameter property="result" javaType="java.lang.Integer" jdbcType="int" mode="OUT" nullValue="0"/>
</parameterMap>
<procedure id="deletePaper" parameterMap="swapParameters">
{call sp_delPaper(?,?)}
</procedure>
java中的调用
@Override
public Integer delete(int id) {
Integer returnid = 0;
HashMap<String,Object> paramMap = new HashMap<String,Object>();
paramMap.put("pid", id);
paramMap.put("result", returnid);
this.getSqlMapClientTemplate().queryForObject("examPaper.deletePaper", paramMap);
return (Integer)paramMap.get("result");
}