首页 > 其他 > 详细

Mybatis #{}与${}区别

时间:2020-05-21 21:09:08      阅读:65      评论:0      收藏:0      [点我收藏+]

#{}:

  表示参数占位符,MySQL会先将#{}替换成?,PreparedStatementHandler类 (PreparedStatement) ps.execute()执行的时候,数据库预编译器就会当作一条SQL处理,会将?塞成指定的值,(无SQL注入的风险)

${}:

  表示变量占位符,  MySQL会将变量直接替换,ps.execute(),如果有SQL注入,数据库预编译器会把SQL分成几条执行(有SQL注入的风险)

 

如果使用阿里的druid,即使设置了${},其实配置下druid,也能防止SQL注入。

2020-05-21 10:15:29.591 DEBUG 42051 --- [nio-8080-exec-1] i.r.modules.sys.dao.SysLogDao.queryEmoj  : ==>  Preparing: select context from zhf_utf8mb4 where 1 =1 and context = ?
2020-05-21 10:15:29.600 DEBUG 42051 --- [nio-8080-exec-1] i.r.modules.sys.dao.SysLogDao.queryEmoj : ==> Parameters: 12345(String)



2020-05-21 10:20:18.550 DEBUG 42138 --- [nio-8080-exec-1] i.r.modules.sys.dao.SysLogDao.queryEmoj : ==> Preparing: select context from zhf_utf8mb4 where 1 =1 and context = 12345
2020-05-21 10:20:18.556 DEBUG 42138 --- [nio-8080-exec-1] i.r.modules.sys.dao.SysLogDao.queryEmoj : ==> Parameters:
2020-05-21 10:20:18.561 DEBUG 42138 --- [nio-8080-exec-1] i.r.modules.sys.dao.SysLogDao.queryEmoj : <== Total: 1

Mybatis #{}与${}区别

原文:https://www.cnblogs.com/feibazhf/p/12933042.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!