zoukankan      html  css  js  c++  java
  • Mybatis #{}与${}区别

    #{}:

      表示参数占位符,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
  • 相关阅读:
    mysql-community-server-5.7.24 & 5.7.31 (5.6.35 升级到 5.7.24)
    企业 数据 能力 中台 大数据平台 CRM
    Tomcat日志切割配置
    你不知道的 Blob
    细说websocket快速重连机制
    DNS反向查询
    从安全的角度看待DNS
    LVS 负载均衡集群
    Linux服务器配置DNS解析
    react修改state的值
  • 原文地址:https://www.cnblogs.com/feibazhf/p/12933042.html
Copyright © 2011-2022 走看看