#{},和 ${}传参的区别以下:sql
使用#传入参数时,sql语句解析是会加上"",当成字符串来解析,这样相比于$的好处是比较明显对的吧,#{}传参能防止sql注入,若是你传入的参数为 单引号',那么若是使用${}这种方式会报错排序
另一种场景是,若是要作动态的排序,好比 order by column,这个时候务必要用${}字符串
select * from table order by 'name' ,这样是没用table
目前来看,能用#就不要用$。select
可是${}在什么状况下使用呢?sql语句
有时候可能须要直接插入一个不作任何修改的字符串到SQL语句中。这时候应该使用${}语法。语法
好比,动态SQL中的字段名,如:ORDER BY ${columnName} (动态排序还能够使用<if> <choose> 等判断语句来区别处理代替传参方式)sql注入
#{}在预处理时会把参数部分用一个占位符:? 代替,eg:select * from user where id = ?;tab
${}只是简单的字符串拼接,在动态解析阶段就直接拼接成了最终的sql语句:select * from user where id = 1;注入