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

    #{}与${}的区别

    #{}
      是预编译的方式,相当于jdbc的占位符PrepareStatement,

      一个#{}就是一个占位符

      mybatis在为#{}设置值时,会加引号


    ${} 模糊查询时不用
      直接拼接的方式,不对数值做预编译
      mybatis在为${}设置值时,不加引号
      存在sql注入的现象
    只有在不支持占位符的时候才使用,比如需要列名的地方,同时获取传来的数据时要做校验

    例如:

    查询排序的处理
    需要列名的地方,在原生jdbc开发中,不可以预编译
    因为预编译会给值加上引号,需要列名的是直接进行拼接的

    public List<Message> selectOrderBy(String column);
    <include refid="BaseSql"/> order by #{column} desc 错误,没排序

    <include refid="BaseSql"/> order by ${column} desc
    mybatis对原生sql不支持占位的地方,接收参数的话,用${}
    ${}是一个拼接sql的方式,存在SQL注入的现象
    传什么就拼什么

  • 相关阅读:
    win10系统封装
    docker基础知识
    TCP三次握手顺手看个示例
    磁盘挂载
    jQuary
    docker rpm包安装
    Mysql单机安装
    docker网络模式
    JavaScript DOM
    JavaScript作用域,面向对象
  • 原文地址:https://www.cnblogs.com/longmo666/p/13553648.html
Copyright © 2011-2022 走看看