mybatis#和$方式的区别,包括注解

最近在测试SQL 注入,对#和$2种参数引用方式做了各种测试。发现网上转的都很简单,现在整理明确下:

1、#{param} ,等同perpare statment的?方式。

如select * from user where name = #{name} == select * from user where name = ?


2、${param},等同statment中,使用字符串直接连接参数。

如String name = "admin";

select * from user where name = '${name}'  (字符串前后必须用'包围) 

等同 "select * from user where name = '" + name +"'";

3、#{} 支持数字,分别用#{0},#{1}...,而${}不支持。此时参数不能使用 @Param注解。

4、在接口里面,如果参数使用@Param("value")注解,则支持#{注解value},而${}不支持

5、${}不支持多参数,多个${}出现,必须使用一个javabean,而#{}无此限制


你可能感兴趣的:(mybatis#和$方式的区别,包括注解)