关于使用mybatis需要动态传入表名需要注意的事项
service中的代码,将表名封装在map中
void insert(Map<String, String> params);
mapper中的代码
insert into ${tableName} (la,lo,al,ai,pi,ro,he)
values (#{la},#{lo},#{alt},#{ai},#{pi},#{ro},#{he})
我们在mapper中取数据的时候要用${tableName}而不能用#{tableName}。
${ } 的变量的替换阶段是在动态 SQL 解析阶段,而 #{ }的变量的替换是在 DBMS 中。
#{}与${}的区别可以简单总结如下:
- #{}将传入的参数当成一个字符串,会给传入的参数加一个双引号
- ${}将传入的参数直接显示生成在sql中,不会添加引号
- #{}能够很大程度上防止sql注入,${}无法防止sql注入