1. 程式人生 > 實用技巧 >mybatis中sql語句必須用${}而不能不用#{}的情況

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 後邊必須跟欄位名,這個欄位名不能帶引號,如果帶引號會被識別會字串,而不是欄位。