您的位置:首页 > 数据库

sql语句中#{}和${}的区别

2019-05-26 17:21 1176 查看

sql语句中#{}和${}的区别

  • #{}
    #
    将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号
    eg:
          
    order by #user_id#

          如果传入的值是1,那么解析成sql时的值为order by “1”
          如果传入的值是id,则解析成的sql为order by “id”
  • ${}
      $
      将传入的数据直接显示生成在sql中
      eg:
            
      order by userid

            如果传入的值是1,那么解析成sql时的值为order by 1
            如果传入的值是id,则解析成的sql为order by id

    结论:
          

    #
    方式底层采用预编译方式
    PreparedStatement
    (预编译),能够很大程度防止sql注入
    $
    方式底层只是
    Statement
    ,无法防止Sql注入

          

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

          一般能用

    #
    的就别用
    $

    注意点
          MyBatis排序时使用order by 动态参数时需要注意,用**$**而不是#

    参考资料:sql 中 ${} 和 #{}的区别

  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: