在MyBatis的SQL映射文件中,#
和$
符號用于處理SQL語句中的參數替換,但它們的工作方式和使用場景有所不同。
#{}
符號
- 預編譯參數:
#{}
被用來作為預編譯SQL語句的占位符。這意味著MyBatis會將你傳入的參數設置為PreparedStatement的參數,從而防止SQL注入攻擊,并允許MyBatis對傳入的數據進行適當的類型轉換。 - 安全性:由于它是通過JDBC的PreparedStatement機制來傳遞參數,因此能夠有效避免SQL注入的風險。
- 示例:
這里的SELECT * FROM users WHERE id = #{userId}
#{userId}
會被實際的參數值所替換&#