给你 2 万条数据,怎么快速导入到 MySQL?写得太好了...

一、前言

前两天做了一个导入的功能,导入开始的时候非常慢,导入2w条数据要1分多钟,后来一点一点的优化,从直接把list怼进Mysql中,到分配把list导入Mysql中,到多线程把list导入Mysql中。

时间是一点一点的变少了。非常的爽,最后变成了10s以内。

下面就展示一下过程。

二、直接把list怼进Mysql

使用mybatis的批量导入操作:

@Transactional(rollbackFor = Exception.class)
public int addFreshStudentsNew2(List<FreshStudentAndStudentModel> list, String schoolNo) {
 if (list == null || list.isEmpty()) {
  return 0;
 }
 List<StudentEntity> studentEntityList = new LinkedList<>();
 List<EnrollStudentEntity> enrollStudentEntityList = new LinkedList<>();
 List<AllusersEntity> allusersEntityList = new LinkedList<>();

 for (FreshStudentAndStudentModel freshStudentAndStudentModel : list) {

  EnrollStudentEntity enrollStudentEntity = new EnrollStudentEntity();
  StudentEntity studentEntity = new StudentEntity();
  BeanUtils.copyProperties(freshStudentAndStudentModel, studentEntity);
  BeanUtils.copyProperties(freshStudentAndStudentModel, enrollStudentEntity);
  String operator = TenancyContext.UserID.get();
  String studentId = BaseUuidUtils.base58Uuid();
  enrollStudentEntity.setId(BaseUuidUtils.base58Uuid());
  enrollStudentEntity.setStudentId(studentId);
  enrollStudentEntity.setIdentityCardId(freshStudentAndStudentModel.getIdCard());
  enrollStudentEntity.setOperator(operator);
  studentEntity.setId(studentId);
  studentEntity.setIdentityCardId(freshStudentAndStudentModel.getIdCard());
  studentEntity.setOperator(operator);
  studentEntityList.add(studentEntity);
  enrollStudentEntityList.add(enrollStudentEntity);

  AllusersEntity allusersEntity = new AllusersEntity();
  allusersEntity.setId(enrollStudentEntity.getId());
  allusersEntity.setUserCode(enrollStudentEntity.getNemtCode());
  allusersEntity.setUserName(enrollStudentEntity.getName());
  allusersEntity.setSchoolNo(schoolNo);
  allusersEntity.setTelNum(enrollStudentEntity.getTelNum());
  allusersEntity.setPassword(enrollStudentEntity.getNemtCode()); //密码设置为考生号
  allusersEntityList.add(allusersEntity);
 }
  enResult =
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值