当前位置: 首页 > 网络应用技术

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

时间:2023-03-07 15:49:51 网络应用技术

  在Mybatis中,参数类型用于存在。SQL中占据的参数符号具有#{}和$ {}。让我们看一下特定的用法方法。

  {test1param}:#APFLOW符号在填充SQL时会预先组合。使用#时,将#{test1param}设置为测试,并将其作为以下代码执行。

  执行时,Mybatis将转换为以下SQL语句:

  $ {test1param}:填充SQL时,$占用的符号未预先填写。填充$占用的符号时,将$ {test1param}设置为测试,并且执行是以下代码。

  执行时,Mybatis将转换为以下SQL语句:

  可以从上面的代码中可以看出$占用的符号具有SQL注入的问题,因为尚未汇总引入的参数,并且一旦执行执行,将直接执行数据; PRE -POPILATION;在此SQL注入问题中不存在。

  由于注射SQL的风险很高,因此我们强烈建议在开发过程中使用#位置符号。毕竟,在开发系统时,安全是我们需要考虑的一个非常重要的一点。

  但是总会有$的情况,例如传递到IN的值,例如下面的代码。

  如上所述,您可以执行注射。可以通过Java代码缝制它,然后可以由$占用进行注射操作。