MyBatis中#{}和${}的差别转载
原创MyBatis 中 #{} 和 ${} 的区别
1、在MyBatis 有两种方式可以动态传递映射配置文件中的参数:
(1)#{} 占位符
(2)${} 拼接符
2、#{} 和 ${} 的区别
(1)
1)#{} 对于参数占位符 ?,即sql 预编译
2)${} 替换为一个字符串,即。 sql 拼接
(2)
1)#{}:动态解析 -> 预编译 -> 执行
2)${}:动态解析 -> 编译 -> 执行
(3)
1)#{} 变量替换已进入。DBMS 中
2)${} 变量替换已进入。 DBMS 外
(4)
1)在变量被替换之后,#{} 相应的变量会自动用单引号引起来。 ’
2)在变量被替换之后,${} 对应的变量没有用单引号引起来。
(5)
1)#{} 能防止sql 注入
2)${} 不能防止sql 注入
3、#{} 和 ${} 例如:假设传入参数为。 1
(1)开始
1)#{}:select * from t_user where uid=#{uid}
2)${}:select * from t_user where uid= ${uid}
(2)
1)#{}:select * from t_user where uid= ?
2)${}:select * from t_user where uid= 1
(3)最后
1)#{}:select * from t_user where uid= 1’
2)${}:select * from t_user where uid= 1
4、#{} 和 ${} 大括号中的值。
(1)单个参数的情况
1)#{}
无MyBatis 缺省值,任意且独立于参数名称
2)${}
<1>使用 MyBatis 默认值 value,即 ${value} <2>如果对映射器接口方法的参数进行了注释,则使用自定义参数名称。@Param("") (2)多个参数的情况 1)#{} <1>使用MyBatis 默认值 arg0、arg1、arg2 … 或 param1、param2、param3 … <2>如果对映射器接口方法的参数进行了注释,则使用自定义参数名称。@Param("") 2)${} <1>使用MyBatis 默认值 arg0、arg1、arg2 … 或 param1、param2、param3 … <2>如果对映射器接口方法的参数进行了注释,则使用自定义参数名称。@Param("") 注:@Param("") 是 @Param(value="") 的简写 5、#{} 和 ${} 使用中的提示和建议 (1无论是单参数还是多参数,建议使用注释。@Param("") (2)能用 #{} 使用这个地方 #{},请勿使用或少用 ${} (3当表名是参数时,必须使用它。 ${}。如:select * from ${tableName} (4)order by 必须使用。 ${}。如:select * from t\_user order by ${columnName} (5)使用 ${} 什么时候,注意什么时候加不加单引号,也就是。 ${} 和 ${} ———————————————— 版权声明:本文是CSDN博主「siwuxie095“原文,跟上。 CC 4.0 BY-SA 版权协议,转载请附上原始来源链接和本声明。 原始链接:https://blog.csdn.net/siwuxie095/article/details/79190856版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123



