#{}和${}的区别

91 阅读1分钟

#{}和${}都是SQL语句中用于插入数据的占位符.

#{}: 参数占位符
会将传入的参数值进行预编译处理, 自动为字符串加上单引号, 能够有效防止SQL注入
例如: where id = #{id} 执行时解析为 where id = ? 在将参数通过预编译的方式注入

${}:字符串替换
直接将参数拼接到SQL语句中, 不进行预编译处理, 不会为字符串加上单引号, 存在SQL注入风险.
适用于动态的SQL片段

(SQL注入):SQL 注入 是一种常见的网络攻击手段,攻击者通过在输入字段或请求中注入恶意的 SQL 语句,操控数据库执行意图之外的操作。