#和$的区别

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#和$的区别
他们之间的区别⽤最直接的话来说就是:#相当于对数据加上双引号,$相当于直接显⽰数据。

1、#对传⼊的参数视为字符串,也就是它会预编译
1 select * from user where name = #{name}
⽐如我传⼀个csdn,那么传过来就是
1
select * from user where name = 'csdn'
2、$将不会将传⼊的值进⾏预编译
1
select * from user where name=${name}
⽐如我穿⼀个csdn,那么传过来就是
1
select * from user where name=csdn
3、#的优势就在于它能很⼤程度的防⽌sql注⼊,⽽$则不⾏。

⽐如:⽤户进⾏⼀个登录操作,后台sql验证式样的:
1
select * from user where username=#{name} and password = #{pwd}
如果前台传来的⽤户名是“wang”,密码是 “1 or 1=1”,⽤#的⽅式就不会出现sql注⼊,⽽如果换成$⽅式,sql语句就变成了1
select * from user where username=wang and password = 1 or 1=1
这样的话就形成了sql注⼊。

4、MyBatis排序时使⽤order by 动态参数时需要注意,⽤$⽽不是#。

相关文档
最新文档