-
#{}是占位符,預編譯處理;${}是拼接符,字符串替換,沒有預編譯處理。
-
Mybatis在處理#{}時,#{}傳入參數是以字符串傳入,會將SQL中的#{}替換為?號,調用PreparedStatement的set方法來賦值。
-
Mybatis在處理${}時 , 是原值傳入 ,就是把{}時,是原值傳入,就是把時,是原值傳入,就是把{}替換成變量的值,相當于JDBC中的Statement編譯
-
變量替換后,#{} 對應的變量自動加上單引號 ‘’;變量替換后,${} 對應的變量不會加上單引號 ‘’
-
#{} 可以有效的防止SQL注入,提高系統安全性;${} 不能防止SQL 注入
-
#{} 的變量替換是在DBMS 中;${} 的變量替換是在 DBMS 外