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的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值