背景形容

我的项目中遇到数据迁徙需要,须要将多表数据迁徙并保留依赖关系 (如 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") 的状况,须要浏览官网文档查看是否修复此问题,以后不做具体探讨