用MyBatis写sql语句时#{}与${}的区别

区别:
#{}:
(1)是以预编译的形式,将参数设置到sql语句中的;
(2)PreparedStatement;
(3)防止sql注入;

${}:
(1)取出的值直接拼装在sql语句中;
(2)Statement,会有安全问题;

两者使用场景比较:
大多数情况下,我们取参数的值应该去使用#{};
原生jdbc不支持占位符的地方我们就可以使用${}进行取值;
比如分表、排序等等,按照年份分表拆分:
select * from ${year}_salary where …;
select * from tbl_employee order by ${f_name} ${order};

猜你喜欢

转载自blog.csdn.net/Dong__Ni/article/details/107205978