mybatis中$和&区别,mybatis#号和$区别

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: