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}