泸州作网站建设联系电话,肃宁网站建设公司,淘宝关键词优化工具,什么网站可以接效果图做今天在利用excel处理业务数据的时候开始打算一条一条插入数据库#xff01;因为要做数据校验和数据保存返回id之后进行其他表也插入#xff01;大约有30000多条数据库吧#xff01;花了大约3-5分钟#xff0c;前端也会出现超时请求问题、让我意识到一条一条插入影响性能因为要做数据校验和数据保存返回id之后进行其他表也插入大约有30000多条数据库吧花了大约3-5分钟前端也会出现超时请求问题、让我意识到一条一条插入影响性能但是因为业务逻辑的需要又不得不一条一条插入后面改变了思维还是必须批量插入数据并将其他表也需要保存的数据也临时存在Java对象中在主对象保存之后进行遍历获取插入。 一条一条数据插入为什么会这么慢呢如果是单条执行数据操作,比如有30000条数据那么你得向数据库服务器发起30000次请求如果使用批量插入就只需要发送一次请求。
其实就像前端发送http请求一样在请求的时候消耗花费了很多时间。
直接看一下批量保存的源代码吧 public boolean saveBatch(CollectionT entityList, int batchSize) {String sqlStatement this.sqlStatement(SqlMethod.INSERT_ONE);SqlSession batchSqlSession this.sqlSessionBatch();Throwable var5 null;try {int i 0;for(Iterator var7 entityList.iterator(); var7.hasNext(); i) {Object anEntityList var7.next();batchSqlSession.insert(sqlStatement, anEntityList);if(i 1 i % batchSize 0) {batchSqlSession.flushStatements();}}batchSqlSession.flushStatements();return true;} catch (Throwable var16) {var5 var16;throw var16;} finally {if(batchSqlSession ! null) {if(var5 ! null) {try {batchSqlSession.close();} catch (Throwable var15) {var5.addSuppressed(var15);}} else {batchSqlSession.close();}}}}
这里 batchSqlSession.flushStatements()其实就是在做拼接SQL的操作将单个插入的方法为每个实体组装一个insert 语句然后执行数据库插入操作