在mybatis的mapper中,接受参数有两种方式,一种是#{},另一种是${},两者有着很大的区别:
#{}实现的是sql语句的预处理参数,之后执行的sql中用?代替,使用时不需要关注数据类型,mybatis自动实现数据类型的转换,并且可以防止SQL注入。
${}实现的是sql语句的直接拼接,不做数据类型的转换,需要自行判断数据类型。不能防止SQL注入。
疑问:
1.什么时候使用${},什么时候使用#{}
优先尝试使用#{},如果#{}不能解决问题,再尝试使用${}
2.什么时候需要加@Param注解?什么时候不加?
单个参数不加,多个参数加
终极解决方案:都加。