mybatis-plus implémente vraiment l'insertion par lots (uniquement pour la base de données MySQL)

illustrer

  • La méthode saveBatch fournie par mybatis-plus n'implémente pas vraiment l'insertion par lot, le principe sous-jacent est une insertion unique dans une boucle for. Donc, si vous voulez vraiment réaliser le traitement par lots, vous devez écrire vous-même une méthode d'insertion par lots.
  • comme suit

la première étape

Importer les dépendances 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>

deuxième étape

Écrire la méthode d'insertion

@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;
    }
}

troisième étape

Ajouter la classe de configuration mybatis

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

étape quatre

Hériter de la classe BaseMapper et écrire votre propre MyBaseMapper

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

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

}

étape cinq

utiliser

@Service
public class UserServiceImpl implements UserService {
    
    

    @Resource
    private UserMapper userMapper;

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

Ce qui précède est tout le contenu de la réalisation de l'insertion par lots, j'espère que cela pourra vous aider ! Si vous pensez que c'est bon, n'hésitez pas à le récupérer.

Je suppose que tu aimes

Origine blog.csdn.net/qq_43813351/article/details/129583020
conseillé
Classement