使用#傳入參數是,sql語句解析是會加上'',比如
select * from table where name = #{name} ,
傳入的name爲小李,那麼最後打印出來的就是
select * from table where name = ‘小李’,
就是會當成字符串來解析,這樣相比於$的好處是比較明顯對的吧,
#{}傳參能防止sql注入,如果在mapper文件中中,你用
select * from table where name = ${name}
那麼解析出來的sql就是
select * from table where name = 小李,
這種語句在某些數據庫是要報錯的。
如果你傳入的參數爲 單引號'那麼如果使用${},這種方式 那麼是會報錯的,
相反,另一種場景,如果你要做動態的排序,比如 order by column,這個時候務必要用${column},因爲如果你使用了#{column},那麼打印出來的將會是
select * from table order by 'name'
這樣的結果同樣錯誤!!!!