mybatis-plus realmente implementa la inserción por lotes (solo para la base de datos MySQL)

ilustrar

  • El método saveBatch proporcionado por mybatis-plus realmente no implementa la inserción por lotes, el principio subyacente es una sola inserción en un bucle for. Entonces, si realmente desea lograr el procesamiento por lotes, debe escribir un método de inserción por lotes usted mismo.
  • como sigue

paso uno

Importar dependencias de mybatis-plus

        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3.1</version>
        </dependency>

segundo paso

Escribir el método de inserción

@Component
public class InsertBatchSqlInjector extends DefaultSqlInjector {
    
    

    @Override
    public List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {
    
    
        // super.getMethodList() 保留 Mybatis Plus 自带的方法
        List<AbstractMethod> methodList = super.getMethodList(mapperClass, tableInfo);
        // 添加自定义方法:批量插入,方法名为 insertBatchSomeColumn
        methodList.add(new InsertBatchSomeColumn());
        return methodList;
    }
}

Paso tres

Agregar clase de configuración de mybatis

@Configuration
// 扫描mapper包
@MapperScan("com.example.java.mapper")
public class MybatisPlusConfig {
    
    
    /**
     * 自定义批量插入 SQL 注入器
     */
    @Bean
    public InsertBatchSqlInjector insertBatchSqlInjector() {
    
    
        return new InsertBatchSqlInjector();
    }
}

paso cuatro

Herede la clase BaseMapper y escriba su propio MyBaseMapper

public interface MyBaseMapper<T> extends BaseMapper<T> {
    
    

    int insertBatchSomeColumn(@Param("list") List<T> batchList);

}

paso cinco

usar

@Service
public class UserServiceImpl implements UserService {
    
    

    @Resource
    private UserMapper userMapper;

    @Override
    public int insertBatch(List<User> records) {
    
    
        return userMapper.insertBatchSomeColumn(user);
    }
}

Lo anterior es todo el contenido de la realización de la inserción por lotes, ¡espero que pueda ayudarlo! Si crees que es bueno, bienvenido a recogerlo.

Supongo que te gusta

Origin blog.csdn.net/qq_43813351/article/details/129583020
Recomendado
Clasificación