关于mybatis中的#{},和${} 的区别

Posted 璃天沫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于mybatis中的#{},和${} 的区别相关的知识,希望对你有一定的参考价值。

使用过mybatis的都知道,mybatis的xml文件中对参数赋值的方式有两种,一种#{},另一种${} ,下面我就来说说两种区别

#{}会在你将要传入参数的位置用一个?替换,在执行sql的时候在将参数插入,可以防止sql注入(mybatis在处理#{}实际上是采用PreparedStatement预编译处理,先将带有?的sql 进行编译,在执行的时候在赋值,赋值之后不会进行编译,而sql注入是发生在编译阶段的),安全性很高,执行效率也要快一些

${}属于一种静态文本替换,相当与sql拼接,无法防止sql注入,安全性较差,一般用于order by 之后或者传入的是固定的字段

#{}在使用的时候会给你的参数带一个双引号,比如你要你要给这个sql传入 where name=#{name} 他在执行的时候会变成这样 where name=#{"name"}

${}在使用的时候不会这样,你传什么就是什么

 

以上是关于关于mybatis中的#{},和${} 的区别的主要内容,如果未能解决你的问题,请参考以下文章

关于 mybatis的问题

关于Mybatis的mapper文件中${}和#{}的区别和注意事项

mybatis中的#和$的区别

mybatis中的$和#的区别

关于贪心算法和动态规划的学习 - 背包问题为例

Mybatis中的#{}和${}的区别?