在MyBatis-Plus中实现Mapper的批量插入功能,可以通过以下几种方式进行: 1. 使用MyBatis-Plus内置的insertBatchSomeColumn方法 这种方法较为简便,但仅支持MySQL语法。你需要自定义SQL注入器,将InsertBatchSomeColumn方法添加到MyBatis-Plus的SQL注入列表中。 步骤: 自定义SQL注入器: java public class MySqlInjector ex...
(可以看 http://www.mybatis.org/mybatis-dynamic-sql/docs/insert.html 中 Batch Insert Support 标题里的内容) SqlSession session = sqlSessionFactory.openSession(ExecutorType.BATCH); try { SimpleTableMapper mapper = session.getMapper(SimpleTableMapper.class); List<SimpleTableRecord> records = getRecords...
stopWatch.start("mapper save batch"); //手动拼接批量插入 openTestMapper.saveBatch(openTestList); sqlSession.commit(); stopWatch.stop(); log.info("mapper save batch:" + stopWatch.getTotalTimeMillis()); } finally { sqlSession.close(); } } 耗时只有 2275 毫秒,性能比 mybatis-plus 自带的 ...
而当我们继续阅读mybatis-plus的源码可以发现,在com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn包中已经为我们实现了真正意义上的批量插入方法,这里就不贴实现的源码了,有兴趣的可以去看看。 因此,我们需要做的就是生效该批量了插入方法,从而可以让我们通过Mapper来调用它。 二、实现批量插入...
前言:用过mybatis或者mybatis-plus的小伙伴们都知道,工具虽好,偏就是没有实现真正的批量插入,每次都需要手写SQL。今天就基于mybatis-plus实现一个不用写SQL的真正的批量插入 1.添加InsertBatchMethod和UpdateBatchMethod类 继承AbstractMethod package com.ahhl.datasource.api.util; ...
public List<AbstractMethod> getMethodList(Class<?> mapperClass) { List<AbstractMethod> methodList = super.getMethodList(mapperClass); methodList.add(new InsertBatchSomeColumn(i -> i.getFieldFill() != FieldFill.UPDATE)); methodList.add(new AlwaysUpdateSomeColumnById((i -> i.getFieldFill() ...
// 注意:此SQL注入器继承了DefaultSqlInjector(默认注入器),调用了DefaultSqlInjector的getMethodList方法,保留了mybatis-plus的自带方法 List<AbstractMethod> methodList = super.getMethodList(mapperClass, tableInfo); methodList.add(new InsertBatchSomeColumn(i -> i.getFieldFill() != FieldFill.UPDATE));...
Mybatis-plus实现真正的批量插入 前言:用过mybatis或者mybatis-plus的小伙伴们都知道,工具虽好,偏就是没有实现真正的批量插入,每次都需要手写SQL。今天就基于mybatis-plus实现一个不用写SQL的真正的批量插入 1.添加InsertBatchMethod和UpdateBatchMethod类 继承AbstractMethod ...
一、使用mybatis-plus内置批量插入 mybatis-plus内置提供了InsertBatchSomeCulumn来实现真批量插入,但是由于只支持MySQL的语法格式,所以没有在通用的API作为默认使用。 将InsertBatchSomeCulumn实例放入Sqlnjector列表中 代码语言:java 复制 @BeanpublicDefaultSqlInjectorinsertBatchSqlInject(){returnnewDefaultSqlInjector(...
@Configurationpublic class MyBatisPlusConfig {/** * 批量操作* * @return*/@Beanpublic InsertBatchSqlInjector sqlInjector() {return new InsertBatchSqlInjector(); }} 到此定义完毕,在Mapper中生成insertBatchSomeColumn(必须是这个方法名)方法。(3)定义一个通用的批量插入接口 public interface...