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

2020-03-29  本文已影响0人  渐进逾

在mybatis的mapper文件中,对于传递的参数我们一般是使用#和$来获取参数值。

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

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

  1. 将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。

  2. $将传入的数据直接显示生成在sql中。
  3. 方式能够很大程度防止sql注入。

4.方式无法防止Sql注入。 5.方式一般用于传入数据库对象,例如传入表名。

  1. {}方式一般用于传入字段值。

7.一般能用#的就别用$。

上一篇下一篇

猜你喜欢

热点阅读