9、mybatis学习——sqlmapper配置中#{}和${}的区别

一、#{}是预编译处理,${}是字符串替换。
  Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;
  Mybatis在处理${}时,就是把${}替换成变量的值。


二、使用#{}可以有效的防止SQL注入,提高系统安全性。
  MyBatis排序时使用order by 动态参数时需要注意,用$而不是#

  1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。
  2. $将传入的数据直接显示生成在sql中。
  3. #方式能够很大程度防止sql注入。
  4.$方式无法防止Sql注入。
  5.$方式一般用于传入数据库对象,例如传入表名。
  6. #{}方式一般用于传入字段值。
  7.一般能用#的就别用$。

 

猜你喜欢

转载自www.cnblogs.com/lyh233/p/12342818.html