zoukankan      html  css  js  c++  java
  • FunctionalInterface~一个批量处理数据的类

    主要使用了一个委托的方式 ,函数式接口,将需要处理的业务逻辑以参数的方式传到方法里,而批量处理的方法代码比较固定,所以进行了抽象。

    /**
     * 数据处理辅助类.
     */
    public class DataHelper {
       static Logger logger = LoggerFactory.getLogger(DataHelper.class);
    
      /**
       * 分页处理逻辑.
       *
       * @param total
       * @param mapper
       * @param query
       * @param consumer
       * @param <T>
       */
      public static <T> void fillDataByPage(int total,
                                            int pageSize,
                                            BaseMapper<T> mapper,
                                            QueryWrapper<T> query,
                                            Consumer<T> consumer) {
          Integer totalPage = total / pageSize;
    
          if (totalPage > pageSize && totalPage % pageSize != 0) {
              totalPage++;
          }
          for (int i = 1; i <= totalPage; i++) {
              IPage<T> pages = mapper.selectPage(
                      new Page<>(i, pageSize), query);
              List<T> list = pages.getRecords();
              for (T item : list) {
                  consumer.accept(item);
              }
              logger.info("【当前数据页:{}/{}】", i, pageSize);
          }
      }
    }
    

    业务层在使用批量大数据处理时,可以直接调用这个fillDataByPage方法,它们只关注自己的业务逻辑即可。

     QueryWrapper<UserAccountSet> actRuExecutionQueryWrapper = new QueryWrapper<>();
            actRuExecutionQueryWrapper.eq("AccountState", 0);
            Integer total = userAccountSetDao.selectCount(actRuExecutionQueryWrapper);
    
            DataHelper.fillDataByPage(total, DATA_PAGE_SIZE, userAccountSetDao, actRuExecutionQueryWrapper, (userAccountSet) -> {
               // 业务逻辑代码            
            });
    

  • 相关阅读:
    调用系统地图进行导航
    ShareSDK使用简介
    FMDB
    关于uitableView的Group模式滑动偏移问题
    iOS GCD详解
    通知中心传值
    开源 iOS 项目分类索引大全
    iOS10隐私设置及相应问题
    支付
    OC中如何把字典中的数据拼接成url字符串
  • 原文地址:https://www.cnblogs.com/lori/p/14717046.html
Copyright © 2011-2022 走看看