【Mybatis】MyBatis中的映射器 #{}和${}

#{}和${}的区别

#{}是占位符 ,预编译 处理;
${}是拼接符,字符串 替换,没有预编译 处理 。

Mybatis 在 处 理 #{} 时 , #{} 传入参数是以字符串传 入 , 会将SQL 中的 #{} 替 换 为 ? 号 , 调 用 PreparedStatement 的 set 方法来赋值。

Mybatis 在 处理时,是 原值传入 ,就 是把{} 替换 成变量的 值,相当于 JDBC 中的 Statement 编译变量替换 后 ; #{} 对应的变量自动加上单引号 ‘’ ; 变量替换后, ${} 对应 的变量不会加上单引号 ‘’

#{} 可以有效的防止 SQL 注入 ,提高系统安全性;
${} 不能 防止 SQL 注入

#{} 的变量替 换是在 DBMS 中; ${} 的变量替换是在 DBMS 外。

猜你喜欢

转载自blog.csdn.net/Black_Customer/article/details/107419725