溫馨提示×

MyBatis中的#{}和${}有什么區別

小億
87
2024-04-07 17:35:36
欄目: 編程語言

#{}和${}是MyBatis中用來傳遞參數的兩種方式。

  1. #{}:在SQL語句中使用#{}表示一個占位符,MyBatis會使用PreparedStatement來處理這個占位符,可以防止SQL注入攻擊。#{}會將傳入的參數按照JDBC規范進行處理,比如自動添加單引號,轉義特殊字符等。

示例:

<select id="getUserById" resultType="User">
    SELECT * FROM user WHERE id = #{userId}
</select>
  1. ${}:在SQL語句中使用${}表示一個變量,MyBatis會將${}替換為實際的參數值,然后拼接到SQL語句中。使用${}需要注意SQL注入攻擊的風險,因為參數值會直接替換到SQL語句中。

示例:

<select id="getUserByName" resultType="User">
    SELECT * FROM user WHERE name = '${userName}'
</select>

因此,推薦使用#{}的方式來傳遞參數,以防止SQL注入攻擊。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女