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}

posted @ 2020-11-16 23:51  peanut_zh  阅读(1765)  评论(0编辑  收藏  举报