MyBatis中井號與美元符號的區別


  1. #{變量名}可以進行預編譯、類型匹配等操作,#{變量名}會轉化為jdbc的類型。

    select * from tablename where id = #{id}
    假設id的值為12,其中如果數據庫字段id為字符型,那么#{id}表示的就是'12',如果id為整型,那么id就是12,並且MyBatis會將上面SQL語句轉化為jdbc的select * from tablename where id=?,把?參數設置為id的值。

  2. ${變量名}不進行數據類型匹配,直接替換。

    select * from tablename where id = ${id}
    如果字段id為整型,sql語句就不會出錯,但是如果字段id為字符型, 那么sql語句應該寫成select * from table where id = '${id}'。

  3. #方式能夠很大程度防止sql注入。

  4. $方式無法方式sql注入。

  5. $方式一般用於傳入數據庫對象,例如傳入表名。

  6. 盡量多用#方式,少用$方式。


免責聲明!

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



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