Mybatis中#{}和¥{}的區別


#{} 是預編譯處理,像傳進來的數據會加個" "(#將傳入的數據都當成一個字符串,會對自動傳入的數據加一個雙引號)

 

${} 就是字符串替換。直接替換掉占位符。$方式一般用於傳入數據庫對象,例如傳入表名.

使用 ${} 的話會導致 sql 注入。什么是 SQL 注入呢?比如 select * from user where id = ${value}

 

value 應該是一個數值吧。然后如果對方傳過來的是 001  and name = tom。這樣不就相當於多加了一個條件嘛?把SQL語句直接寫進來了。如果是攻擊性的語句呢?001;drop table user,直接把表給刪了

 

所以為了防止 SQL 注入,能用 #{} 的不要去用 ${}

 

如果非要用 ${} 的話,那要注意防止 SQL 注入問題,可以手動判定傳入的變量,進行過濾,一般 SQL 注入會輸入很長的一條 SQL 語句。

參考至:https://www.w3cschool.cn/mybatis/mybatis-yta93bpj.html


免責聲明!

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



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