1. 程式人生 > >Mybatis中的#和$

Mybatis中的#和$

避免 ron 系統安全 固定 答案 dst 系統 用戶輸入 結構

#{}和${}的區別是什麽?

正確的答案是:#{}是預編譯處理,${}是字符串替換。

(1)mybatis在處理#{}時,會將sql中的#{}替換為?號,調用PreparedStatement的set方法來賦值。

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

(3)使用#{}可以有效的防止SQL註入,提高系統安全性。原因在於:預編譯機制。

預編譯完成之後,SQL的結構已經固定,即便用戶輸入非法參數,也不會對SQL的結構產生影響,從而避免了潛在的安全風險。

Mybatis中的#和$