1,mybatis 中 $ # 区别

mybatis 动态传参的两种方式

#{ }在动态解析的时候,会将#{ } 解析为一个预编译阶段的一个标记符号?,在预处理阶段才会替换

${ }在动态解析的时候,会将${ } 直接就会惊醒变量替换

优先使用 #{}。因为 ${} 会导致 sql 注入的问题

select * from ${tableName} where name = #{name}

表名如果是:user; delete user; -- 

动态解析的sql 就会变成:

select * from user; delete user; -- where name = ?;

这样sql 就注入进去了,但是表明只能用${ }

 

 #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号

 $将传入的数据直接显示生成在sql中

$方式一般用于传入数据库对象,例如传入表名

相关文章:

  • 2022-03-05
  • 2021-10-14
  • 2021-06-28
  • 2021-07-08
  • 2021-10-12
  • 2021-09-11
  • 2021-09-25
  • 2022-03-04
猜你喜欢
  • 2021-08-28
  • 2021-10-24
  • 2022-01-05
  • 2022-02-23
  • 2022-12-23
  • 2021-11-08
  • 2021-09-16
相关资源
相似解决方案