• 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);
    }
    }

    `

  • 相关阅读:
    数据库操作--获取空数据
    常用的css属性
    有序列表与无序列表
    表格标签table
    Div 块 盒子
    border边框 css属性
    IMG
    html中a标签与img标签
    CSS
    css 网页中如何嵌套style样式?
  • 原文地址:https://www.cnblogs.com/heavenTang/p/14485789.html
Copyright © 2020-2023  润新知