Parameter index out of range (1 > number of parameters, which is 0

本文摘自classinstance.cn。

hibernate操作数据库时,写了一个模糊查询,用参数形式传入SQL,语句如下:

select *  from article where 1=1 and title like '%?%' order by create_time desc

调用时传入参数时一直报错:

Parameter index out of range (1 > number of parameters, which is 0,如图:

Parameter index out of range (1 > number of parameters, which is 0

我调试了下代码,参数都是没错的,语句中的问号也是没错的,后来百度了下,原来?问不能用引号''包着,否则会当成正式参数传入sql语句中,不会当成占位符。

于是我把引号去掉,改成:and title like %?%,传入参数'java'又报错了,hibernate把?解析成参数时语句变成and title like %'java'%,

错误如下:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%'java'% order by create_time desc' at line 1

通过上面就知道了hibernate解析参数后会自动加上''引号,要想实现模糊查询时,可以通过提前拼接好百分号%,语句改成如下:

select *  from article where 1=1 and title like ? order by create_time desc

问号里的参数我们传入'%java%' 就可以了。


欢迎分享,(木庄网络博客交流QQ群:562366239

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论