1、使用#方式时
select *
from user
where name = #{name}
如果传入的参数是张三,那么这个SQL查询就会是
select *
from user
where name = "张三"
#方式会把传入的参数变成字符串,即加上"",此时可以防止SQL注入。
2、使用$方式时
$方式不会讲传入的参数处理,而是直接拼入字符串
select *
from user
order by ${param}
如果param的值为userType的话,会直接拼入SQL中。即
select *
from user
order by userType
此种方式不会将参数转换为字符串。
3、总结
使用#方式更为安全,不会将参数直接拼入SQL查询中;但是在某种特定情况下,需要用到$方式,比如当我们用到表中的某个字段时,不能对字段名加上引号,不然无法完成查询。