mybatis中#{}和${}傳參的區別

使用#傳入參數是,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'  

這樣的結果同樣錯誤!!!!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章