java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2).

1 篇文章 0 订阅
1 篇文章 0 订阅

今天继续搞任务,写完sql语句后,并在数据库管理工具Navicat Premium上测试,测试没问题后,我把sql语句放到mapper.xml文件上,结果运行时老是报错,错误信息如下:

java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2).

出现错误,我一点都不慌,把错误信息复制,在网上百度一下该错误,出现很多篇解决文章,我点开几篇,发现都是一个错误解决方案:mybatis表达式不能再加引号(以下是其他文章的sql错误语句)

<insert id="addInfo" parameterType="payInfoEntity">
    insert into payinfo values('#{pnum}','#{sumprice}','#{paydate}','#{pname}','#{yunprice}','#{shoupeople}','#{status}')
</insert>

也就是SQL语句不能是’#{pnum}’,而是#{pnum},把引号去掉。
然后我查看我的sql,并没有任何参数有加单引号的。看过四五篇文章后,我放弃了,还是自己慢慢找错误吧。
审查了sql语句一会,最后,我在感觉可能发生问题的地方改了下,如下所示:
原:

<if test="startTime!=null and endTime!=null">
    and ncsf.create_time &gt;= '2020-12-01 00:00:00' -- #{startTime}
    and ncsf.create_time &lt;= '2021-12-31 23:59:59' -- #{endTime}
</if>

我把最后面的注释去掉后,就正常了
改了后:

<if test="startTime!=null and endTime!=null">
    and ncsf.create_time &gt;= '2020-12-01 00:00:00'
    and ncsf.create_time &lt;= '2021-12-31 23:59:59'
</if>

总结:
原来是注释搞的鬼,但我其他地方也有注释啊,为啥就这里出现了问题呢?我猜测,可能是我注释的内容的问题吧,我其他地方注释的是备注,是文字,而这里我注释的是参数,所以解析的时候认为是多了一些符号吧。

  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值