背景描述
项目中遇到数据迁移需求,需要将多表数据迁移并保留依赖关系 (如 b.pid = a.id),因此需要先批量写入a表,然后获取新数据id,再将新的依赖关系写入b表
所需依赖版本
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.4</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
代码示例
dao
int batchInsert(@Param("list") List<MyEntity> list, @Param("tableName") String tableName);
mapper
<insert id="batchInsert" useGeneratedKeys="true" keyProperty="id">
INSERT INTO ${tableName} (column_1, column_2, column_3)
VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.value1},
#{item.value2},
#{item.value3})
</foreach>
</insert>
重点说明
由于时间受限,并未尝试修改数组@Param的别名,可能存在仅允许使用 ("list") 的情况,需要阅读官方文档查看是否修复此问题,当前不做具体探讨
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。