mybatis中保存数据太大的时候,可以考虑分流


mybatis落表时,由于数据量太大,可能会报错,所以可以给其分流:

核心方法;

/**
     * 2> 根据目标容量 划分List
     * @param source
     * @param capacity 划分完成的单个List容量
     * @param 
     * @return
     */
    public static  List> splitListBycapacity(List source,int capacity){
        List> result=new ArrayList>();
        if (source != null){
            int size = source.size();
            if (size > 0 ){
                for (int i = 0; i < size;) {
                    List value = null;
                    int end = i+capacity;
                    if (end > size){
                        end = size;
                    }
                    value = source.subList(i,end);
                    i = end;

                    result.add(value);
                }

            }else {
                result = null;
            }
        }else {
            result = null;
        }


        return result;
    }

实际调用:

 @DataSource(name = DSEnumReport.DATA_SOURCE_SYS ) //数据源配置,结合自己项目可有可无 
    @Transactional
    public int saveData(String tableName,List dataList) {
        int a = 0;
        List> lists = AccountDateUtils.splitListBycapacity(dataList, 10000);
        for (List list : lists) {
            a+= zgCostMapper.insertShares(tableName,list);
        }
        return a;
    }