Mybatis的接口映射文件UserMapper.xml、参数传递有2种方式、一种是#{}、另一种是${}
二者有着很大的区别:
#{} 实现的是sql语句的预处理参数、之后执行sql中用?号代替、使用时不需要关注数据类型、mybatis自动实现数据
类型的转换、并 且可以防止sql注入
${} 实现是sql语句的直接拼接、不做数据类型转换。需要自行判断数据类型、不能防止sql注入
总结:
#和$的区别:
1、
#是预编译的方式,
$是直接拼接;
2、
#不需要关注数据类型,mybatis实现自动数据类型转换;
$不做数据类型转换,需要自行判断数据类型;
3、
#可以防止sql注入;
$不能防止sql注入;
4、
如果只有一个参数,默认情况下,
#{}中可以写任意的名字;
${}中只能用value来接收。