1.#{} : 能夠防止sql注入, sql語句在編譯的過程當中,會把值轉換成?佔位符, 在最終編譯的時候,會對值進行轉義,添加」」, 當傳入的值爲簡單數據類型的時候, 括號內部能夠隨便寫 #{}.sql
2.${} : 不能防止sql注入, 不會對傳入的值進行轉義的操做, 直接完成sql語句的拼接, 當傳入的值爲簡單數據類型的時候, 括號內部必須寫value ${value},當執行排序的sql語句的時候, order by , 後邊必須寫${}.spa
select * from user where name = #{name};
#{} 在動態解析的時候, 會解析成一個參數標記符。就是解析以後的語句是:排序
select * from user where name = ?;
select * from user where name = '${name}';
${}在動態解析的時候,會將咱們傳入的參數當作String字符串填充到咱們的語句中,就會變成下面的語句字符串
select * from user where name = "zhangsan";