Mybatis中#{}和${}的区别

两者都可以在mybatis中用在输入映射

{}是预编译处理,

${}是字符串替换。

mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;
mybatis在处理 $ { } 时,就是把 ${ } 替换成变量的值,完成的是简单的字符串拼接。

补充:在mybatis中使用#{}可以防止sql注入,提高系统安全性。

sql注入是什么:
例如:用户输入的账号密码在代码中是以字符串拼接的方式生成查询语句的,这样用户输入的内容很容易改变我们的原查询代码,这就相当一一个数据库注入问题。
我们验证密码和账号的时候,如果用户在输入密码的时候 输入 or 1=1;那不管他输入的密码是什么都可以通过。

原文地址:https://www.cnblogs.com/zhaoyuan72/p/11597880.html