mybatis #{}和${}区别

Posted 陈彦斌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis #{}和${}区别相关的知识,希望对你有一定的参考价值。

区别1

  • #{}:相当于JDBC Sql语句中的占位符?(PreparedStatement),可以防止Sql注入
  • ${}:相当于JDBC Sql语句中的连接符号+(Statement),不能防止Sql注入

区别2

  • #{}:进行输入映射的时候,会对参数进行类型解析(如果是String类型,那么Sql语句会自动加上\' \')
  • ${}:进行输入映射的时候,将参数原样输出到SQL语句中 -->相当于replace替换相应位置的值

  注:模糊搜索时,注意使用的是${},如果使用的是#{},会在两头加上\'\',此时sql语句变成:select * from user where username like \'%\'张三\'%\';这样不就报错了嘛

区别3

  • #{}:如果进行简单类型(String、Date、8种基本类型的包装类)的输入映射时,#{}中参数名称可以任意
  • ${}:如果进行简单类型(String、Date、8种基本类型的包装类)的输入映射时,#{}中参数名称必须是value

 

以上是关于mybatis #{}和${}区别的主要内容,如果未能解决你的问题,请参考以下文章

mybatis 中 # 和 $ 的区别及应用场景

Mybatis-Plus和Mybatis的区别

mybatis-plus和mybatis的区别

mybatis定义别名typealias和package的区别

mybatis中的$和#的区别

mybatis中的#和$的区别