MyBatis中#{}和${}的区别
1.在MyBatis 的映射配置文件中,动态传递参数有两种方式:
(1)#{} 参数占位符,sql预编译,变量替换后自动加上单引号' ',能防止sql注入
(2)${} 字符串替换,sql拼接,变量替换后不会加上单引号' ',不能防止sql注入
2.#{},${} 使用的建议:
(1)表名作参数时,必须使用${}。如:select * from ${tableName}
(2)order by 时,必须使用${}。如:select * from user order by ${orderColumn} ${orderType}
(3)使用${}时,要注意加或不加单引号,即${} / '${}'
(4)除以上三点,能用 #{} 的地方,坚决不用 ${}。