mybatis中$和&区别,mybatis#号和$区别
如何解决写爬虫IP受阻的问题?立即使用。
好吧,我真正开始开发已经快一年了。一直在看别人的博客,自己懒得写,也不会写。从今天开始慢慢练习写博客。前段时间刚在公司遇到这样的问题。
一、举例说明
select * from user where name= Dato ;
select * from user where name=# { name };
select * from user where name=“$ { name }”;通常情况下,我们不会注意到它有什么不同。因为这些sql可以达到我们的目的,来查询名为dato的用户。
二、区别
SQL是mybatis的强大特性之一,也是它优于其他ORM框架的重要原因。在预编译sql语句之前,mybatis动态地将sql解析成一个BoundSql对象,它也在这里处理动态Sql。在动态SQL解析阶段,# {}和$ {}的行为会有所不同。
select * from user where name=# { name };# {}动态解析时,会解析成参数标记。也就是说,解析后的语句是:
select * from user where name=?所以当我们使用$ {}时
select * from user where name=“$ { name }”;在动态解析过程中,$ {0}将使用我们以字符串形式传入的参数填充我们的语句,这将成为下面的语句。
select * from user where name= Dato ;预编译的SQL语句不包含变量,已经是常量数据。它相当于我们普通的不带变量的sql。
综上所述,$ {}变量的替换是在动态SQL解析阶段,而# {}变量的替换是在DBMS中。
这是我们可以看到的# {}和$ {}的主要区别。此外,还有以下不同之处:
该方法可以在很大程度上防止sql注入。
$ method无法阻止Sql注入。
$方法通常用于传入数据库对象,比如表名。
一般能用#就不要用$了。
所以我们在使用mybatis的时候,尽量使用#方法!这是大家要注意的地方。
推荐教程:以上《Java教程》是Java Mybatis中$ {}和# {}区别的详细内容。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。