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.