Mybatis中#{}和${}的区别

Posted 洋洋兮若江河

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis中#{}和${}的区别相关的知识,希望对你有一定的参考价值。

      1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号,而$将传入的数据直接显示生成在sql中  ,例:select * from user where id=#{id} ,如果id为1那么解析成sql就是select * from user where id="1";

如果用的是${id} 解析成sql为select * from user where id= 1 。

     2.#可以防止sql注入,而$不可以。

sql注入:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

SQL注入攻击案例:
查看某个表查询的url参数为:?id=1
则通过注入命令:?id=1 or 1=1,则可以列出整个表里面的所有数据。

以上是关于Mybatis中#{}和${}的区别的主要内容,如果未能解决你的问题,请参考以下文章

mybatis和hibernate的区别

Mybatis中#{}和${}传参的区别及#和$的区别小结

MyBatis中resultMap=“Map”和resultType=“Map”区别

Mybatis中#{}和${}传参的区别及#和$的区别小结(转)

mybatis和ibatis的区别

Mybatis的mapper文件中#和$的区别 以及 resultType和resultMap的区别