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'