用MyBatis往SQLSERVER里批量插入数据,如何避免超过2100 Parameters错误
如题,方法如下。
-
计算要插入的每个Record里有多少个参数(Length)。
-
计算出每次插入的最大件数N(2100/Length)。
-
使用 Guava’s Lists.partition(List, int) method,调用MyBatis的插入批处理。
List
- items = ... for (List
- partition : Lists.partition(items, 最大件数N)) { // 调用如下的插入批处理 this.dao.insert(partition); }
MyBatis的XML:
insert into dbo.T (ID, NAME, DEPARTMENT_CD) values (#{value.id,jdbcType=VARCHAR}, #{value.name,jdbcType=NVARCHAR}, #{value.departmentCd,jdbcType=VARCHAR}
- items = ... for (List