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

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

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

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

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

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

猜你喜欢

转载自www.cnblogs.com/liouzeshuen/p/10430222.html