一、報錯信息
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}