要实现动态传入表名、列名,需要做如下修改
1.添加属性statementType="PREPARED"
2.同时sql里的属有表名变量取值都改成${xxxx},条件变量是#{xxx}
<delete id="deleteDataBaseTable" parameterType="java.util.List" statementType="PREPARED" >
<foreach collection="list" item="item" index="index" separator=";">
delete from ${item.tablename} where 1=1 and ${item.column_name} = #{item.columnvalue}
</foreach>
</delete>
- statementType:STATEMENT(非预编译),PREPARED(预编译)或CALLABLE中的任意一个,这就告诉 MyBatis 分别使用Statement,PreparedStatement或者CallableStatement。默认:PREPARED。
Map<String,Object> sqlmap=new HashMap<String, Object>();
sqlmap.put("tablename", tablename);
sqlmap.put("column_name", column_name);
sqlmap.put("columnvalue", map.get("aliasAccount").toString());