生产环境并发量较高,在使用异步批量插入时出现字符串越界异常,测试环境从未出现.起初以为是异步的问题,后来发现同步批量插入方法也出现同样的错.
版本
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
org.mybatis.spring.MyBatisSystemException:
nested exception is org.apache.ibatis.executor.ExecutorException:
Error preparing statement. Cause: java.lang.IllegalStateException: String index out of range: 202
解决方案
- 将批量插入的集合转存一个新的内存地址,使用new ArrayList<>() ,再批量插入.
- 将批量插入的集合分批次执行.