详解Mybatis中的 ${} 和 #{}区别与用法

网友投稿 1397 2023-05-09

详解Mybatis中的 ${} 和 #{}区别与用法

详解Mybatis中的 ${} 和 #{}区别与用法

Mybatis 的Mapper.xml语句中parameterType向SQL语句传参有两种方式:#{}和${}

我们经常使用的是#{},一般解说是因为这种方式可以防止SQL注入,简单的说#{}这种方式SQL语句是经过预编译的,它是把#{}中间的参数转义成字符串,举个例子:

select * from student where student_name = #{name}

预编译后,会动态解析成一个参数标记符?:

select * from student where student_name = ?

而使用${}在动态解析时候,会传入参数字符串

select * from student where student_name = 'lyrQqBqrEeics'

总结:

#{} 这种取值是编译好SQL语句再取值

${} 这种是取值以后再去编译SQL语句

#{}方式能够很大程度防止sql注入。

$方式无法防http://止Sql注入。

$方式一般用于传入数据库对象,例如QqBqrEe传入表名.

一般能用#的就别用$.

举个activiti工作流的例子:

select * from${prefix}ACT_HI_PROCINST where PROC_INST_ID_ =#{processInstanceId}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot登录拦截配置详解(实测可用)
下一篇:MyBatis 中 ${}和 #{}的正确使用方法(千万不要乱用)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~