用MyBatis往SQLSERVER里批量插入数据,如何避免超过2100 Parameters错误

如题,方法如下。

  1. 计算要插入的每个Record里有多少个参数(Length)。

  2. 计算出每次插入的最大件数N(2100/Length)。

  3. 使用 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}