原因:在批量执行sql语句的时候,没执行完就关闭了数据库连接,从而抛出异常。
解决方法:1、优化sql语句,降低执行的时间;2、调大执行时间;3、优化代码
对于第三个解决方法,举个栗子
{
for(…){
查询select
更新update
插入insert
}
}
代码执行过慢,导致没执行完数据库连接就关闭了
优化后:
{
for(…){
查询 --------走缓存
更新 -------放入List中,先不更新
插入 -------放入List中,先不插入
返回结果,可以关闭数据库连接
}
if(list!=null&&list.size>0){
updateBatch(…) -------异步处理
}
if(list!=null&&list.size>0){
insertBatch(…) -------异步处理
}
}
调用updateBatch、insertBatch可以用如下方法
①@sync
②事件驱动
list中可能没有数据,如果不加if(list!=null&&list.size>0)的话,会抛出error sql的错误
注意:出现error sql时候
1、sql语句编写问题
2、执行sql的数据是否为空
要真正进行批量插入需要配置
useServerPrepStmts=true&rewriteBatchedStatements=true
statement…报错,加上autoReconnect=true