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


一、报错信息

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

二、出现原因

在进行like模糊查询时,我将字符串拼接在了sql语句上,'%#{param}%'

三、解决问题

方法一,#不支持拼串,但是$支持,但这样改极其危险,一定要分情况,少数情况可以这么做,总体不建议。

方法二,使用<bind>标签拼串

四、思考总结

select * from user_inf where id=${id} and username=#{username} 为例,讲解 #,$ 的使用详情

控制台输入

Preparing: select * from user_inf  where id=1 and username=?
区别:
#{}:是以预编译的形式,将参数设置到sql语句中;PreparedStatement;防止sql注入
${}:取出的值直接拼装在sql语句中;会有安全问题;
大多情况下,我们去参数的值都应该去使用#{};

原生jdbc不支持占位符的地方我们就可以使用${}进行取值
比如分表、排序。。。;按照年份分表拆分
select * from ${year}_salary where xxx;
select * from user_inf order by ${_name} ${order}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM