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.