#{}用于預編譯,將參數以安全方式傳遞給SQL語句,可以防止SQL注入攻擊。而${}是直接將參數值拼接到SQL語句中,存在SQL注入的風險。
#{}是用來替代傳入參數的位置,MyBatis會將#{}替換為一個問號(?)占位符,然后將參數值作為預編譯參數傳遞給數據庫。而${}是直接將參數的值替換到SQL語句中。
#{}只能用于傳遞參數值,例如WHERE語句中的條件值,而${}可以用于動態拼接SQL語句的其他部分,例如表名、列名等。
#{}會自動對參數值進行轉義處理,而${}不會進行轉義處理。
總的來說,推薦在編寫SQL語句時使用#{}來傳遞參數,以確保安全性和預編譯的效果。而${}適用于動態拼接SQL語句的其他部分。