zoukankan      html  css  js  c++  java
  • java 分批处理数据工具类

    `package com.ly.cloud.base.unit;

    import java.util.LinkedList;
    import java.util.List;

    /**

    • 处理因为list太长 批量插入sql报错的问题
      */
      public class BatchSaveUtil {

      public interface PreAddObjectFunction{
      void doPreHandle(T obj) ;
      }

      /**

      • 返回处理好的list
      • @param list 数据源
      • @param batchCount 分批数量 例子:假如是1000 则每1000条分批一次
      • @param preAddObjectFunction 在add前对操作对象进行操作
      • @return 返回分批好的数据源
        */
        public List<List> getBatchList(List list,Integer batchCount,PreAddObjectFunction preAddObjectFunction){
        if(list == null || list.size() <= 0) return null ;
        List<List> batchList = new LinkedList<>() ;
        List tempList = null ;
        for(int i = 0;i < list.size();i++){
        T obj = list.get(i) ;
        if(i % batchCount == 0){
        tempList = new LinkedList<>() ;
        batchList.add(tempList) ;
        }
        preAddObjectFunction.doPreHandle(obj) ;
        tempList.add(obj) ;
        }
        return batchList ;
        }

      /**

      • 这个不需要传回调
      • @param list
      • @param batchCount
      • @return
        */
        public List<List> getBatchList(List list,Integer batchCount){
        return this.getBatchList(list,batchCount,obj -> {}) ;
        }

    }
    // 调用列子
    // 每次500的量新增
    List list = new BatchSaveUtil().getBatchList(users,500, vo -> {
    // 预处理
    vo.setState("1");
    });
    if(CollectionUtils.isNotEmpty(list)){
    for(UserDTO user: users){
    rs = rs + insert(user);
    }
    }

    `

  • 相关阅读:
    mac 使用指南
    客服系统引用方案
    CSS中margin和padding的区别
    NuGet学习笔记(1)——初识NuGet及快速安装使用
    百度搜索这些词:(百度搜索特效,好玩)
    sql语言:如何查询字符串某个字符的个数?
    Sql日期时间格式转换
    SQL获取当前时间(日期)
    Redis快速入门:初识Redis
    选择Key-Value Store
  • 原文地址:https://www.cnblogs.com/heavenTang/p/14485789.html
Copyright © 2011-2022 走看看