#{}、${}
#{参数}:占位符;
参数类型:
1)、可以接受任意的基本数据类型;
注、当参数为基本数据数据类型时,占位符中的属性名可以随意写,但是建议为见明知意;
2)、可以接收pojo中的属性值;
注、当参数为pojo中的变量时,占位符中的属性名为pojo中所对应的变量名;
3)、可以通过HashMap设置;
注、当参数为pojo中的变量时,占位符中的属性名为集合中的键名;
${参数}:拼接符;
1)、可以接受任意的基本数据类型;
注、当参数为基本数据数据类型时,占位符中的属性名为value;
2)、可以接收pojo中的属性值;
注、当参数为pojo中的变量时,占位符中的属性名为pojo中所对应的变量名;
3)、可以通过HashMap设置;
注、当参数为pojo中的变量时,占位符中的属性名为集合中的键名;
${}、#{}区别:
执行sql的方式:
#{}:预编译sql,相当于PreparedStatement;
${}:不会进行预编译,相当于Statement;
安全性:
#{}:安全性高,不会发生sql注入;
${}:安全性不高,可能发生sql注入;
效率:
#{}:效率相对高;
${}:效率相对低;
数据类型:
#{}:不需要考虑数据类型(数据库类型与java类型之间)是否相同,MyBatis会自动转换数据类型;
${}:需要考虑数据类型;
参数:
当参数为基本数据类型时,占位符中可以使用任意变量接收,拼接符只能通过value变量接受;