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

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

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

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

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

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

4.方式一般用于传入数据库对象,例如传入表名。

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

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

你可能感兴趣的:(Mybatis中#{}和${}的区别)