在MyBatis中,#{}和${}都是用于向SQL語句中傳遞參數的方式,但它們有一些區別。
#{}:#{}是使用預編譯的方式傳遞參數,MyBatis會將#{}中的內容替換為一個問號(?),然后將參數值作為預編譯參數傳遞給數據庫,這樣可以避免SQL注入攻擊。示例:SELECT * FROM user WHERE id = #{userId}
${}:${}是直接替換參數值的方式,MyBatis會將${}中的內容直接替換為參數值,這樣會有SQL注入的風險。示例:SELECT * FROM user WHERE id = ${userId}
因此,一般來說推薦使用#{}來傳遞參數,以增加安全性。如果需要動態拼接SQL語句或者傳遞一些常量值,可以使用${}。