Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 19259|回复: 0

mybatis批量导入 ,出现异常全部不添加(回滚)

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-4-9 11:26:36 | 显示全部楼层 |阅读模式
    public int importModel(MultipartFile file) throws Exception{
            String fileName = file.getOriginalFilename();
            String suffxName = fileName.substring(fileName.lastIndexOf(".",fileName.length()) );
            //System.out.println(fileName+",后缀名:"+suffxName);
            String prefix=fileName.substring(fileName.lastIndexOf("."));
            final File excelFile = File.createTempFile(UUID.randomUUID().toString(), prefix);
             //批量处理
            SqlSession session = sqlSessionFactory.openSession(ExecutorType.BATCH,false);
            commericalModelMapper = session.getMapper(CommericalModelMapper.class);
            // MultipartFile to File
            file.transferTo(excelFile);
            //判断excelp版本
            Workbook workbook = null;
            if(suffxName.equals(".xlsx")){
                workbook = new XSSFWorkbook(new FileInputStream(excelFile));
            }else{
                workbook = new HSSFWorkbook(new FileInputStream(excelFile));
            }
            int count = 0;
            if(workbook != null){
                //获取excel中的数据,转换为实体类
                Sheet sheet = workbook.getSheetAt(0);
                List<CommericalModel> commericalModelList = CommericalModelResult.excelToModel(sheet);
                int limitCount = 1000;
                //进行批量添加操作(有一条不成功,全部回滚)
                if(commericalModelList != null && commericalModelList.size() > 0){
                    for(int i = 0 ; i < commericalModelList.size();i++){
                        CommericalModel commericalModel = commericalModelList.get(i);
                        commericalModel.setCreateDate(new Date());
                        commericalModel.setUpdateDate(new Date());
                        commericalModel.setModelIsDelete((short)1);
                        commericalModelMapper.insert(commericalModel);
                        /*if(i != 0 && i%limitCount == 0){
                            //数量达到1000提交一次
                            session.commit();
                        } */
                        count++;
                    }
                    session.commit();
                }
            }
            //删除临时文件
            if(excelFile.exists()){
                excelFile.delete();
            }
            return count;
        }
    

      

    SqlSession session = sqlSessionFactory.openSession(ExecutorType.BATCH,false);
    commericalModelMapper = session.getMapper(CommericalModelMapper.class);

    commericalModelMapper.insert(commericalModel);
    添加的时候使用这个,分批次导入,可以计入那行是错误的,返回;成功添加了多少行都可以处理
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 19:36 , Processed in 0.068146 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表