mybatis中#{}与${}的区别

1.#{} : 能够防止sql注入, sql语句在编译的过程当中,会把值转换成?占位符, 在最终编译的时候,会对值进行转义,添加””, 当传入的值为简单数据类型的时候, 括号内部能够随便写 #{}.sql

2.${} : 不能防止sql注入, 不会对传入的值进行转义的操做, 直接完成sql语句的拼接, 当传入的值为简单数据类型的时候, 括号内部必须写value ${value},当执行排序的sql语句的时候, order by , 后边必须写${}.spa

 

举例:

#{}

select * from user where name = #{name};

#{} 在动态解析的时候, 会解析成一个参数标记符。就是解析以后的语句是:排序

select * from user where name = ?;

 

${}

select * from user where name = '${name}';

${}在动态解析的时候,会将咱们传入的参数当作String字符串填充到咱们的语句中,就会变成下面的语句字符串

select * from user where name = "zhangsan";
相关文章
相关标签/搜索