#{} ${}区别

{}是预编译处理,${}是字符串替换

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;
posted @ 2021-06-20 11:54  哈尔的卡西法  阅读(124)  评论(0)    收藏  举报