ibatis2.3.0版本使用iterate进行批量插入处理,表名不确定,也需要通过参数传输进sql中,如何处理呢
时间: 2024-02-26 17:58:09 浏览: 141
可以使用动态 SQL 中的 `<foreach>` 元素来解决这个问题。具体步骤如下:
1. 在 SQL 中使用 `<foreach>` 元素来迭代传入的表名参数,生成多个 INSERT 语句。
例如:
```
<insert id="batchInsert">
<foreach collection="tableNames" item="tableName" separator=";">
INSERT INTO ${tableName} (col1, col2, col3) VALUES (#{col1}, #{col2}, #{col3})
</foreach>
</insert>
```
2. 在 Java 代码中传入一个包含多个表名的 List 参数。
例如:
```
List<String> tableNames = new ArrayList<String>();
tableNames.add("table1");
tableNames.add("table2");
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("tableNames", tableNames);
SqlSession sqlSession = sqlSessionFactory.openSession();
sqlSession.insert("batchInsert", paramMap);
sqlSession.commit();
```
这样就可以动态生成多个 INSERT 语句,实现批量插入了。
阅读全文