在MyBatis中,#{param}和${param}都是用來引用參數的語法,但是它們之間有一些重要的區別:
#{param}:在SQL語句中使用#{param}可以防止SQL注入攻擊,MyBatis會將參數值轉義后作為預編譯參數傳遞給數據庫,因此在使用#{param}時不需要擔心參數值中包含特殊字符導致的安全問題。
${param}:在SQL語句中使用${param}會將參數值直接拼接到SQL語句中,這樣可能會導致SQL注入攻擊,因此不推薦使用${param}。另外,使用${param}時參數值會按照字符串解析,不會進行轉義或者預編譯處理。
因此,建議在MyBatis中盡量使用#{param}來引用參數,以避免安全問題和其他潛在的風險。