#{}与${}的不同之处
#{} 的作用主要是替换预编译语句(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语句中(一般通过#{}的方式,${}会有sql注入的问题)

被折叠的 条评论
为什么被折叠?



