${} 與 #{} 的區別

#{}是預編譯處理,$ {}是字符串替換(當做佔位符來用)。

mybatis在處理#{}時,會將sql中的#{}替換爲?號,調用PreparedStatement的set方法來賦值;

mybatis在處理 $ {} 時,就是把 ${} 替換成變量的值。

使用 #{} 可以有效的防止SQL注入,提高系統安全性。SQL注入是發生在編譯的過程中,因爲惡意注入了某些特殊字符,最後被編譯成了惡意的執行操作。而預編譯機制則可以很好的防止SQL注入。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章