在xml映射文件中获取参数的符号都是用的#{}的方式,其实Mybatis还支持另一种符号来接收传递过来的参数值,就是${},他们是区别就在与底层使用jdbc的statement不一样
#{}对应的是PreparedStatementd对象来执行sql语句
${}对应的是Statement对象来执行sql语句
反应在sql语句的异同就是用不用站位符
结论:
#{}没后sql注入攻击的安全问题,大多数我们都是使用它
${}有sql注入攻击的安全问题,特殊的情况下使用它
${}什么时候使用呢?
烦是原生的jdbc不能使用占位符的地方,就只能使用它,因为PreparedStatementd中,可以用占位符的地方之后,where条件语句的参数中,其他地方不能用,比用表名称,order by 排序字段,这些地方是不能用?