@Override
    public void savePatientAndSeekMedical(){
        long start = System.currentTimeMillis();
//        ((PatientService) AopContext.currentProxy()).saveBatch(patients, 1000);
//        saveBatch(patients, 1000);
        SpringUtil.getBean(this.getClass()).saveBatch(patients, 1000);
//        patientMapper.saveBatchBySql(patients);
//        seekMedicalService.saveBatch(seekMedicals, 1000);
        log.warn("保存" + patients.size() + "条患者数据,用时:" + (System.currentTimeMillis() - start) + "ms");
        patients.clear();
        seekMedicals.clear();
    }

这段代码里面使用了三种方式保存患者数据

第一种 ((PatientService) AopContext.currentProxy()).saveBatch(patients, 1000); 方式在这里会抛出Cannot find current proxy: Set 'exposeProxy' property on Advised to 'true' to make it available异常,猜测原因是saveBatch是mybatisPlus的方法,普通情况如果需要在在该方法上做切面可以用该方式

 

第二种 saveBatch(patients, 1000); 会导致性能巨慢 导入2w调数据需要900秒左右

 

第三种 SpringUtil.getBean(this.getClass()).saveBatch(patients, 1000); 可以保证事务并且性能非常好(2w条数据大概15秒左右)

 

贴上SpringUtil代码

package cn.rivamed.fhvc.util;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

@Component
public class SpringUtil implements ApplicationContextAware {

    private static ApplicationContext applicationContext = null;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SpringUtil.applicationContext = applicationContext;
    }

    public static <T> T getBean(Class<T> cla) {
        return applicationContext.getBean(cla);
    }

    public static <T> T getBean(String name, Class<T> cal) {
        return applicationContext.getBean(name, cal);
    }

    public static Object getBean(String name){
        return applicationContext.getBean(name);
    }

    public static String getProperty(String key) {
        return applicationContext.getBean(Environment.class).getProperty(key);
    }
}

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-02
  • 2021-06-14
  • 2022-01-15
猜你喜欢
  • 2021-10-11
  • 2022-12-23
  • 2022-03-05
  • 2022-12-23
  • 2022-01-07
  • 2022-02-18
  • 2022-12-23
相关资源
相似解决方案