Mybatis 中 ${}和 #{} 的区别

Posted 一个柚子菌

tags:

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

${} :

  1. ${} 则只是简单的字符串替换 
  2. 动态解析sql 表现为 select * from user where user_name = "lilei" 

${}使用应该注意的问题:

危险操作如下 select  * from ${tableName} where user_name = #{name}

如果此时 传进来的参数 tableName = "user ; delete user; -- "  动态解析之后如下:

select * from user ; delete user -- where user_name = ?

-- 之后的语句会被注释掉 ,原本的sql语句则变成了 查询所有的用户信息 + 删除用户表对数据库造成重大损伤

#{}:

  1. #{}在预处理时,会把参数部分用一个占位符 ? 表示 
  2. 表现为 select * form user where user_name = ?  

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

与 regenerateExpiredSessionId="false" 和 regenerateExpiredSessionId="true" .net 的区

Win32 Console Application和cpp 。请问在vc++中写程序,新建Win32 Console Application和新建一个cpp的区

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

mybatis中的$和#的区别

第四轮面试题

mybatis和hibernate的区别