其他分享
首页 > 其他分享> > MyBatis调用存储过程遇到ExecutorException错误

MyBatis调用存储过程遇到ExecutorException错误

作者:互联网

       今天生产环境中遇到一个突发问题,本来运行正常的一段MyBatis调用Mysql存储过程的代码突然报错,错误信息如下:
The server encountered an internal error that prevented it from fulfilling this request.</u></p><p><b>exception</b> <pre>org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: A query was run and no Result Maps were found for the Mapped Statement '包路径.方法名'.  It's likely that neither a Result Type nor a Result Map was specified.
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:981)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:871)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
      MyBatis中的Mapper如下所示:

<parameterMap id="certMap" type="java.util.Map">
   <parameter property="变量1" jdbcType="INTEGER" javaType="java.lang.Integer" mode="IN"/>
   <parameter property="变量2" jdbcType="INTEGER" javaType="java.lang.Integer" mode="IN"/>
   <parameter property="o_outcode" jdbcType="INTEGER" javaType="java.lang.Integer" mode="OUT"/>
   <parameter property="o_outmsg" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>
</parameterMap>
<select id="方法名" parameterMap="certMap" statementType="CALLABLE">
      CALL 存储过程名(?,?,?,?)
</select>
   从错误堆栈的文本来看,应该是Mapper文件中的 select 节点没有定义resultType导致的,但是问题是这个存储过程之前一直在生产环境中正常执行的,而且他是一个存储过程,并没有定义返回值。
   经排查,原来之最近在调试生产环境的数据的时候,对存储过程做过修改,其中为了跟踪运行状态,在存储过程中增加了一行代码: 
   select 变量名; 
   这行代码的select并没有into关键字,导致"变量值"作为结果输出了,进而导致了java端没有resultType的问题。

标签:web,存储,调用,java,FrameworkServlet,MyBatis,org,ExecutorException,servlet
来源: https://blog.csdn.net/paoma_1008/article/details/88969928