Mybatis 中 ${}和 #{} 的区别
Posted 一个柚子菌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis 中 ${}和 #{} 的区别相关的知识,希望对你有一定的参考价值。
${} :
- ${} 则只是简单的字符串替换
- 动态解析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语句则变成了 查询所有的用户信息 + 删除用户表对数据库造成重大损伤
#{}:
- #{}在预处理时,会把参数部分用一个占位符 ? 表示
- 表现为 select * form user where user_name = ?
以上是关于Mybatis 中 ${}和 #{} 的区别的主要内容,如果未能解决你的问题,请参考以下文章
与 regenerateExpiredSessionId="false" 和 regenerateExpiredSessionId="true" .net 的区
Win32 Console Application和cpp 。请问在vc++中写程序,新建Win32 Console Application和新建一个cpp的区