java元帅

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  49 随笔 :: 0 文章 :: 0 评论 :: 19852 阅读

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

核心方法;

复制代码
/**
     * 2> 根据目标容量 划分List
     * @param source
     * @param capacity 划分完成的单个List容量
     * @param <T>
     * @return
     */
    public static <T> List<List<T>> splitListBycapacity(List<T> source,int capacity){
        List<List<T>> result=new ArrayList<List<T>>();
        if (source != null){
            int size = source.size();
            if (size > 0 ){
                for (int i = 0; i < size;) {
                    List<T> 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<ManageFeeCalDetailVo> dataList) {
        int a = 0;
        List<List<ManageFeeCalDetailVo>> lists = AccountDateUtils.splitListBycapacity(dataList, 10000);
        for (List<ManageFeeCalDetailVo> list : lists) {
            a+= zgCostMapper.insertShares(tableName,list);
        }
        return a;
    }
复制代码

 

posted on   java元帅  阅读(224)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 我与微信审核的“相爱相杀”看个人小程序副业
· DeepSeek “源神”启动!「GitHub 热点速览」
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示