mybatis中#{}與${}的區別

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";
相關文章
相關標籤/搜索