${}:拼接的方式,当输入参数为非类类型,例如int,string.${value},查询速度快
#{}:占位符的方式,当输入参数为非类类型,例如int,string.${任意定义},可以防止sql注入
使用场景
(1)能用 #{} 的地方就用 #{},尽量少用 ${}
(2)表名作参数,或者order by 排序时用 ${}
(3)传参时参数使用@Param("")注解,@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值(相当于又加了一层密),正确的将参数传入sql语句中(一般通过#{}的方式,${}会有sql注入的问题)。如下:
Role selectById(@Param("id") String id);
List<Role> selectByNameAndOrgId(@Param("name") String name, @Param("orgId") String orgId);