两者都可以在mybatis中用在输入映射
#{}是预编译处理,
${}是字符串替换。
1.mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;
select * from user where name = #{name};
#{} 在动态解析的时候, 会解析成一个参数标记符
select * from user where name = ?;
mybatis在处理 $ { } 时,就是把 ${ } 替换成变量的值,完成的是简单的字符串拼接。
select * from user where name = '${name}';
${}在动态解析的时候,会将我们传入的参数当做String字符串填充到我们的语句中,就会变成下面的语句
select * from user where name = "dato";
补充:
在mybatis中使用
#{}可以防止sql注入,提高系统安全性。
$方式无法防止Sql注入。
一般能用#的就别用$.