文章目录
在mybatis接口mapper文件中引用传入的参数是通过#{param}或者${param}来使用的。
1.数据类型匹配
#:<mark>会进行预编译,而且进行类型匹配</mark>
$:<mark>不进行数据类型匹配</mark>
2.实现方式
#:用于<mark>变量替换</mark>
$:实质上是<mark>字符串拼接</mark>
3. # 和 $ 的使用场景
-
变量的传递
<mark>必须使用#</mark>,使用#{}就等于使用了PrepareStatement这种占位符的形式,提高效率。
<mark>可以防止sql注入等等问题。</mark>
#方式一般用于传入<mark>添加</mark>,<mark>修改</mark>的值或<mark>查询</mark>,<mark>删除</mark>的where条件 id值
select * from t_user where name = #{param} -
$只是只是简单的字符串拼接,
<mark>要特别小心sql注入问题</mark>,
<mark>对应非变量部分,只能用$。</mark>
<mark>$方式一般用于传入数据库对象,</mark>
比如这种
group by 字段 ,
order by 字段,
表名,
字段名
等
<mark>没法使用占位符的就需要使用${}</mark>
select count(*), from t_user group by ${param} -
能同时使用
#和$的时候,最好用#。

京公网安备 11010502036488号