mybatis中sql語句必須用${}而不能不用#{}的情況


在mybatis中如果我們使用#{}的方式編寫的sql時,#{} 對應的變量自動加上單引號 ' '

例如:

select * from #{param}

當我們給參數傳入值為user時,他的sql是這樣的:

select * from 'user'

參數user上會帶着單引號,而單引號在mysql中會被識別為字符串,select一個字符串肯定是會報錯的。

 

而如果我們使用${}的方式編寫的sql時,${} 是進行sql拼接,${} 對應的變量是不會被加上單引號 ' ' 的

select * from ${param}

輸出的sql為

select * from user

 

總結一下,就是當我們需要拼接的變量上不能帶單引號時,就必須使用${},其他情況都盡量使用#{}的方式,因為${}會有sql注入的問題。

常見的使用${}的情況:

1.當sql中表名是從參數中取的情況

2.order by排序語句中,因為order by 后邊必須跟字段名,這個字段名不能帶引號,如果帶引號會被識別會字符串,而不是字段。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM