0
点赞
收藏
分享

微信扫一扫

#{}与${}的区别

面试的时候经常碰到这样的题目:#{}和${}的区别是什么?

回答这样的问题首先要知道这两个符号是干嘛用的,然后再通过实例来解释两者的不同,这样才能更好的说服面试者。

${}和#{}的区别
1、这两个符号都是用在SQL语句当中,用作占位符,所谓占位符,顾名思义就是先占住一个位置,等待着你往该符号添加内容。
2、举例说明,比如在原SQL语句中:

delete from
ups_role_permission_dataparams
where role_id = #{roleId,jdbcType=INTEGER}

该符号位置用于传入参数,使用#{}符号在SQL解析时首先会进行预编译添加"",如这里role_id = “roleid”;使用${}符号在SQL解析时会默认直接解析参数,如这里role_id = roleid;

3、首先我们要了解什么是预编译机制,预编译是提前对SQL语句进行编译,而其后注入的参数不再进行SQL编译。我们知道,SQL注入是发生在编译的过程中,因为恶意注入了某些特殊字符,最后被编译成了恶意的执行操作,而预编译机制则可以很好的防止SQL注入。因此#{}符号可以防止SQL注入,能使用#{}尽量使用#{},但是Mybatis在进行order by排序时要使用${}。


举报

相关推荐

#与$的区别

target与this的区别

equals与==的区别

= =与equals的区别

“==”与equals的区别

if if 与 if elif 的区别

0 条评论