mybatis中#和$符号的区别
${}传入的参数:mybatis不会对其进行特殊处理;
#{}传入的参数:mybatis默认会把其当成字符串;
差别:#和$在预编译处理中是不一样的。#类似jdbc中的PreparedStatement,对于传入的参数,在预处理阶段会使用?代替
比如:select * from user where id=#{id} 预处理时:select * from where id=?
#只有在真正查询的时候才会带入参数
$做得却是替换的操作
建议:
能使用#{}的地方应尽量使用#{}
PreparedStatement的方式能防止sql注入 ,所以#{}可以有效防止sql注入,而${}则可能导致sql注入成功。
浙公网安备 33010602011771号