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