MyBatis中#{}和${}

落落的大方發表於2020-10-28

在MyBatis中有兩種動態傳遞引數的方式#{},${}
#{}:佔位符
KaTeX parse error: Expected 'EOF', got '#' at position 9: {}:拼接符 #̲{}是預編譯,{}是字串拼接
變數替換後#{}會自動加上單引號,${}不會加上單引號
#{}能防止sql注入 ${}不能防止sql注入

#{} 和 KaTeX parse error: Expected 'EOF', got '#' at position 20: …例項:假設傳入引數為 1 1)#̲{}:select * fro…{}:select * from t_user where uid= 'KaTeX parse error: Expected 'EOF', got '#' at position 16: {uid}' (2)然後 1)#̲{}:select * fro…{}:select * from t_user where uid= ‘1’
(3)最後
1)#{}:select * from t_user where uid= ‘1’
2)${}:select * from t_user where uid= ‘1’

#{} 和 ${} 在使用中的技巧和建議
(1)不論是單個引數,還是多個引數,一律都建議使用註解@Param("")
(2)能用 #{} 的地方就用 #{},不用或少用 ${}
(3)表名作引數時,必須用 ${}。如:select * from ${tableName}
(4)order by 時,必須用 ${}。如:select * from t_user order by ${columnName}
(5)使用 ${} 時,要注意何時加或不加單引號,即 和 ′ {} 和 ' {}’

相關文章