mybatis中#和$
时间: 2023-08-29 08:13:55 浏览: 199
在 MyBatis 中,# 和 $ 符号都用于参数占位符,但它们的使用方式略有不同。
#符号表示参数占位符,例如:
```
<select id="getUserById" resultType="User">
select * from user where id = #{id}
</select>
```
在上面的示例中,#id# 将被替换为传递给 SQL 查询的实际参数值。MyBatis 会自动将传递的参数值包装在一个预编译语句中,可以防止 SQL 注入攻击。
$符号表示直接替换参数值,例如:
```
<select id="getUserById" resultType="User">
select * from user where id = ${id}
</select>
```
在上面的示例中,$id$ 将被替换为传递给 SQL 查询的实际参数值。使用 $ 符号时,传递的参数值不会被包装在预编译语句中,因此可能会导致 SQL 注入攻击。
总的来说,使用 # 符号是更安全和推荐的方式,因为它可以防止 SQL 注入攻击。但有时候,如果需要动态构建 SQL 语句,$ 符号可能更方便。但是,使用 $ 符号时必须小心,避免 SQL 注入攻击。
阅读全文