mybatis批量插入超过500多条就报错

项目场景:mybatis开发数据导入功能时,导入数据大概2000多条


问题描述

例如:在大概500多条的时候插入就报

java.sql.SQLDataException: ORA-01438: 值大于为此列指定的允许精度
ORA-06512: 在 line 1

; SQL []; ORA-01438: 值大于为此列指定的允许精度
ORA-06512: 在 line 1
; nested exception is java.sql.SQLDataException: ORA-01438: 值大于为此列指定的允许精度


原因分析:

开始猜测是字段长度问题导致,但是表中数字类型的都是int类型,不存在这个问题,后来开始试着减少数据量导入,发现超过500之后开始报错


解决方案:

实现分批次执行插入sql

 /  /一次插入的条数,也就是分批的list大小
        int dataLimit = 500;
        int listSize = dealData.size();
        int maxSize = listSize - 1;
        List<CommodityInfo> newList = new ArrayList<CommodityInfo>();//新建一个载体list
        for (int i = 0; i < listSize; i++) {
            //分批次处理
            newList.add(dealData.get(i));//循环将数据填入载体list
            if (dataLimit == newList.size() || i == maxSize) {  //载体list达到要求,进行批量操作
            	xxx.save(newList);
            	newList.clear();
            }
        }

版权声明:本文为qxy15997826736原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。