1:#是將傳入的值當作字符串的形式sql
例如 :select * from 表名 where id =#{id}mybatis
解析:select* from student where id ='1'.spa
2 :$是將傳入的數據直接顯示生成sql語句字符串
例如 :select * from 表名 where id =${id}string
解析:select* from student where id =1.it
3 :使用#能夠很大程度上防止sql注入。(語句的拼接)編譯
4: 可是若是使用在order by 中就須要使用 $.變量
5 :在大多數狀況下仍是常用#,但在不一樣狀況下必須使用$. select
#與$ 的區別最大在於:#{} 傳入值時,sql解析時,參數是帶引號的,而sql語句
${} 傳入值時,sql解析時,參水是不帶引號的。
在mybatis中的$與#都是在sql中動態的傳入參數。
#{}: 解析爲一個 JDBC 預編譯語句(prepared statement)的參數標記符(?),一個 #{ } 被解析爲一個參數 佔位符 。
${}: 僅僅爲一個純碎的 string 替換,在動態 SQL 解析階段將會進行變量替換。
例如: select * from student where name=#{value} -- name='cy'
select * from student where name=${value} -- name=cy
若是是 參數 通常使用 #{} 例如 字段,limit 的也可以使用
若是是 sql 自己條件爲動態,使用 ${} 例如 order by ,limit 的也可以使用
Interger 類型 均可使用,String 類型請慎重!