區別:
在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個占位符我們經常使用,當用錯的時候還是很難發現的!!