#{}与${}的不同之处
#{} 的作用主要是替换预编译语句(PrepareStatement)中的占位符? 【推荐使用】
INSERT INTO user
(name
) VALUES
(#
{name
});
INSERT INTO user
(name
) VALUES
(?);
${} 的作用是直接进行字符串替换
INSERT INTO user
(name
) VALUES
('${name}');
INSERT INTO user
(name
) VALUES
('kuangshen');
备注 #{} 很大程度上可以防止SQL注入(SQL注入是发生在编译的过程中,因为恶意注入了某些特殊字符,最后被编译成了恶意的执行操作); ${} 主要用于SQL拼接的时候,有很大的SQL注入隐患。
应用场景 #{} 用于CRUD语句 ${} 用于模糊查询(要加%%)
对于#{}与${}的选择
1、能用
2、表名作参数,或者order by 排序时用
{}
3、传参时参数使用@Param
("")注解,@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值(相当于又加了一层密),正确的将参数传入sql语句中(一般通过