#{} ${}区别
{}是预编译处理,${}是字符串替换
mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;mybatis在处理${}时,就是把${}替换成变量的值
使用#{}可以有效的防止SQL注入,提高系统安全性
例如:
所以通常情况下,使用#{}
insert into user values (null,#{name},55); --> insert into user values (null,'fff',55); insert into user values (null,${name},55); --> insert into user values (null,fff,55);//sql语句错误
而如果需要引用的是一个列名,使用${}
select * from user order by #{cname}; --> select * from user order by 'age';//sql语句错误
select * from user order by ${cname}; --> select * from user order by age;
浙公网安备 33010602011771号