mybatis中#{}和${}的区别
#{}和${}的区别:
1:
#{}为参数占位符?,即sql预编译
${}为字符串替换,即sql拼接
2:
变量替换后,#{}对应的变量自动加上单引号 ''
变量替换后,${}对应的变量不会加上单引号 ''
3:
#{}能防止sql注入
${}不能防止sql注入
示例:
假设传入参数为 1
第一步:
#{}:select * from t_user where uid=#{uid}
${}:select * from t_user where uid= '${uid}'
第二步:
#{}:select * from t_user where uid= ?
${}:select * from t_user where uid= '1'
第三步:
#{}:select * from t_user where uid= '1'
${}:select * from t_user where uid= '1'