使用Mybatis很久以来,一直使用的是#,这个符号来操作的。 基本上没有使用$符号。
# $
这个符号的基本作用就是将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。例如sql语句:
select * from t where name = #{name};
select * from t where name = ${name}$;
如果传入的name值是: 罗罗
实际上的效果是:
select * from t where name = "罗罗";
select * from t where name = 罗罗;
如果传入的值是:1 or name != null
实际上的效果就是:
select * from t where name = "1 or name != null";
select * from t where name = 1 or name != null;
这样就能看到区别了。
#能够加上引号,防止sql 注入攻击。 $能够直接显示传入的参数。但是有可能被sql注入攻击。
$的使用场景一般是:order by 语句。需要动态的使用参数。这里就能够使用$$了,