1)#{} 为参数占位符 ?,即sql 预编译
2)${} 为字符串替换,即 sql 拼接
1)#{} 能防止sql 注入
2)${} 不能防止sql 注入
在接口中传递的参数中:
例如:
public User queryUserByID(@Param("id")String id) ;
或者
public User queryUser(@Param("userName")String userName,@Param("passWord")String password);
(1)不论是单个参数,还是多个参数,一律都建议使用注解@Param(""),就相当于在sql 的条件参数名即为@Param("")中的值。
例如:
select * from UserInfo where userName=#{userName} and password=#{passWord};
(2)能用 #{} 的地方就用 #{},不用或少用 ${} (切记!!!除非一些特殊情况)
(3)表名作参数时,必须用 ${}。如:select * from ${tableName}
(4)order by 时,必须用 ${}。如:select * from t_user order by ${columnName}
(5)使用 ${} 时,要注意何时加或不加单引号,即 ${} 和 ’ ${} '(切记!!!)