MyBatis框架中使用#{}和${}的区别是什么?

#{}是预编译处理,${}是字符串替换。

${}会将里面的参数直接拼接到SQL语句中执行,有可能被SQL注入(例如参数中传 or true,这样一来不管是否满足我们设定好的条件受or的逻辑影响一对则对,sql语句都会执行);

而#{}则会将参数外加  '  '  后执行,不会影响到设定好的SQL语句条件

Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;

Mybatis在处理{}时,就是把时,就是把{}替换成变量的值。

使用#{}可以有效的防止SQL注入,提高系统安全性。


版权声明:本文为m0_64879579原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。