zoukankan      html  css  js  c++  java
  • 关于mybatis中的#{},和${} 的区别

    使用过mybatis的都知道,mybatis的xml文件中对参数赋值的方式有两种,一种#{},另一种${} ,下面我就来说说两种区别

    #{}会在你将要传入参数的位置用一个?替换,在执行sql的时候在将参数插入,可以防止sql注入(mybatis在处理#{}实际上是采用PreparedStatement预编译处理,先将带有?的sql 进行编译,在执行的时候在赋值,赋值之后不会进行编译,而sql注入是发生在编译阶段的),安全性很高,执行效率也要快一些

    ${}属于一种静态文本替换,相当与sql拼接,无法防止sql注入,安全性较差,一般用于order by 之后或者传入的是固定的字段

    #{}在使用的时候会给你的参数带一个双引号,比如你要你要给这个sql传入 where name=#{name} 他在执行的时候会变成这样 where name=#{"name"}

    ${}在使用的时候不会这样,你传什么就是什么

  • 相关阅读:
    事务 ~ 锁
    JDBC
    C# ~ 由 IDisposable 到 GC
    C# ~ 泛型委托
    函数式编程
    反射
    测试初识
    C# ~ 从 委托事件 到 观察者模式
    C# ~ 从 IEnumerable / IEnumerator 到 IEnumerable<T> / IEnumerator<T> 到 yield
    Java初识
  • 原文地址:https://www.cnblogs.com/liouzeshuen/p/10430222.html
Copyright © 2011-2022 走看看