MyBatis-Plus是MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,简化开发、提高效率。saveBatch方法是MyBatis-Plus提供的一个用于批量插入数据的方法,它可以显著提高数据插入的效率,尤其是当需要插入大量数据时。 2. 说明batchSize参数在saveBatch方法中的作用 batchSize参数在saveBatch方法中用于指定每次批量插入...
@Transactional(rollbackFor=Exception.class)@OverridepublicbooleansaveBatch(Collection<T>entityList,intbatchSize){StringsqlStatement=getSqlStatement(SqlMethod.INSERT_ONE);//分批执行SQLreturnexecuteBatch(entityList,batchSize,(sqlSession,entity)->sqlSession.insert(sqlStatement,entity));} 我们看下saveBatch是怎么...
saveBatch方案:不设置saveBatch的batchSize参数,直接将5000条数据的list放入方法中进行批量保存。 多线程saveBatch方案:新建线程池,其中线程数量为5个,遍历5000条数据时将数据均分成5个list,分别放到线程池中进行执行,线程使用saveBatch的方式直接将1000条数据进行批量保存。 以上多线程的执行方式采用submit有future的返回...
boolean saveBatch(Collection<T> entityList); boolean saveBatch(Collection<T> entityList, int batchSize); entityList:要插入的实体类集合。可以是任何实现了 Collection 接口的集合类型,如 List、Set 等。 batchSize(可选):指定每次批量插入的大小。默认情况下,MyBatis-Plus 会一次性插入所有数据。如果设置了 ...
mybatis-plus 中saveOrUpdateBatch都是采用默认策略(主键)作为判断该数据存在与否的依据,当我们需要使用其他字段作为判断条件的时候,发现不论怎么使用都不行。 这个时候可以采取简单的方式,list在代码里面循环里面使用saveOrUpdate来进行一条一条更新,但是一条一条更新会太慢,当数据太大时也是不行的。
首先最快的肯定是手动拼sql脚本和mybatis-plus的方式速度最快,其次是mybatis-plus的saveBatch。这里要说下有很多文章都说需要单独配置rewriteBatchedStatements参数,才会启用saveBatch的批量插入方式。但是我这边跟进源码进行查看的时候默认值就是true,所以我猜测可能是版本问题,下面会附上版本以及源码供大家参考。 rewrite...
Mybatis-Plus的saveBatch 直接看源码 /** * 批量插入 * * @param entityList ignore * @param batchSize ignore * @return ignore */@Transactional(rollbackFor=Exception.class)@OverridepublicbooleansaveBatch(Collection<T>entityList,intbatchSize){StringsqlStatement=getSqlStatement(SqlMethod.INSERT_ONE);ret...
mybatis-plus 的批量插入方法saveBatch在实现的时候,似乎是逐条插入的: // ServiceImpl类中 public boolean saveBatch(Collection<T> entityList, int batchSize) { String sqlStatement = this.getSqlStatement(SqlMethod.INSERT_ONE); return this.executeBatch(entityList, batchSize, (sqlSession, entity) -> {...
mybatis-plus 批量插入示例 正常我们使用mybatis-plus插入的时候,首先想到的是 saveBatch 方法,不过看了下打印出来的sql和底层代码,才发现它并不是真正的批量插入。 IService 中的代码为 defaultbooleansaveBatch(Collection<T>entityList) {returnthis.saveBatch(entityList, 1000);...
我们分析其实现原理如下:com.baomidou.mybatisplus.extension.service.impl.ServiceImpl#saveBatch @Transactional(rollbackFor = Exception.class) @Override public boolean saveBatch(Collection<T> entityList, int batchSize) { String sqlStatement = sqlStatement(SqlMethod.INSERT_ONE); ...