在mybatis接口mapper文件中引用传入的参数是通过#{param}或者${param}来使用的。
1.数据类型匹配
#:会进行预编译,而且进行类型匹配
$:不进行数据类型匹配
2.实现方式
#:用于变量替换
$:实质上是字符串拼接
3.#和$的使用场景
(1)变量的传递,必须使用#,使用#{}就等于使用了PrepareStatement这种占位符的形式,提高效率。可以防止sql注入等等问题。#方式一般用于传入添加,修改的值或查询,删除的where条件 id值
select * from t_user where name = #{param}
(2)字段名可以使用,使用$ ,如下列情况,提高速度,要小心sql注入的问题
<if test="scheme!=null and scheme!=''">
"${scheme}".t_clogistics_device
</if>
本文详细解析了MyBatis中#与$符号在SQL参数传递中的区别及应用场景,包括预编译、字符串拼接及如何避免SQL注入等问题。
2075

被折叠的 条评论
为什么被折叠?



