mybatis #與$占位符的區別


區別:

在sql中當傳入的參數是字符型,則用#號會帶上單引號,不會引起sql注入

在sql中當傳入的參數是字符型,則用$號不會帶上單引號,會引起sql注入

舉個例子:

當傳入的參數用於查詢條件,盡量用#號,特殊情況可酌情使用#號或$號

mybatis代碼:
select id,name from user where name = #{userName}
解析后的sql語句:
select id,name from user where name = '張三'

當傳入的參數用於字段或表名,則必須使用$號,否則會報錯(字段不存在或無效表名)

mybatis代碼:
select id,${filedName} from ${userTable} 
解析后的sql語句:
select id,name from user  

錯誤的使用

mybatis代碼:
select id,#{filedName} from #{userTable} 
解析后的sql語句:
select id,'name' from 'user'

雖然這2個占位符我們經常使用,當用錯的時候還是很難發現的!!


免責聲明!

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



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