mybatis中 #{} 和 ${}


在mybatis中#{}表示一個占位符:

        1、#將傳入的數據都當成一個字符串,會對自動傳入的數據加一個雙引號

        2、#在很大程度上可以防止sql注入

        3、例如#{id}:#{}中的id表示輸入的參數名稱,如果輸入參數是簡單類型,那么#{}中的參數可以任意。

        4、能用#{}就別用${}
在mybatis中${}表示一個拼接符:

       1、${}將傳入的數據直接顯示生成在sql中。

       2、如果使用${},而你傳入的是字符串,比如中文、英文。就必須這樣:'${}',不然會報(Unknown column 'TT' in 'where clause')的錯誤,當然傳入數字沒問題。

       3、${value}: ${}中value表示輸入的參數名稱,如果輸入的參數是簡單類型,那么${}中的值只能是value

       4、${}存在sql注入的風險,慎用!但是在特殊場景下必須使用${},比如order by 語句后面要跟動態列,就得使用${colname}.

 

也就有這樣一個問題 為什么${} 不安全 還要用 ${} ?

有一些場景是必須用 ${} 的

就是 一些string 類型的 不會給加上 ‘ ’ 比如order by 語句后面要跟動態列,就得使用${colname}.

 

這點沒說仔細完全


免責聲明!

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



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