mybatis # $的區別

1 #是將傳入的值當作字符串的形式,eg:select id,name,age from student where id =#{id},當前端把id值1,傳入到後臺的時候,就至關於 select id,name,age from student where id ='1'.前端

2 $是將傳入的數據直接顯示生成sql語句,eg:select id,name,age from student where id =${id},當前端把id值1,傳入到後臺的時候,就至關於 select id,name,age from student where id = 1.  sql

3 使用#能夠很大程度上防止sql注入。(語句的拼接  #{xxx},使用的是PreparedStatement,會有類型轉換,比較安全 簡單的說就是#{}是通過預編譯的,是安全的,${}是未通過預編譯的,僅僅是取變量的值,是非安全的,存在SQL注入。)安全

4 可是若是使用在order by 中就須要使用 $.字符串

 5 在大多數狀況下仍是常用#,但在不一樣狀況下必須使用$.編譯

相關文章
相關標籤/搜索