mybatis中#和$符号的区别

${}传入的参数:mybatis不会对其进行特殊处理;

#{}传入的参数:mybatis默认会把其当成字符串;

差别:#和$在预编译处理中是不一样的。#类似jdbc中的PreparedStatement,对于传入的参数,在预处理阶段会使用?代替

  比如:select * from user where id=#{id}   预处理时:select * from where id=?

  #只有在真正查询的时候才会带入参数

  $做得却是替换的操作

建议:

  能使用#{}的地方应尽量使用#{}

  PreparedStatement的方式能防止sql注入 ,所以#{}可以有效防止sql注入,而${}则可能导致sql注入成功。
posted @ 2020-09-01 14:58  Be_Ready_For_Battle  阅读(199)  评论(0)    收藏  举报