前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【对线面试官】今天来聊聊Java泛型

【对线面试官】今天来聊聊Java泛型

作者头像
Java3y
发布2020-12-31 15:09:43
2680
发布2020-12-31 15:09:43
举报
文章被收录于专栏:Java3yJava3y
代码语言:javascript
复制
public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {

 List<T> findAll();

 List<T> findAll(Sort sort);

 List<T> findAllById(Iterable<ID> ids);

 <S extends T> List<S> saveAll(Iterable<S> entities);

 void flush();

 <S extends T> S saveAndFlush(S entity);

 void deleteInBatch(Iterable<T> entities);

 void deleteAllInBatch();

 T getOne(ID id);

 @Override
 <S extends T> List<S> findAll(Example<S> example);

 @Override
 <S extends T> List<S> findAll(Example<S> example, Sort sort);
}
代码语言:javascript
复制
// 传入 需要group by 和 sum 的字段名
public cacheMap(List<String> groupByKeys, List<String> sumValues) {
  this.groupByKeys = groupByKeys;
  this.sumValues = sumValues;
}

private void excute(T e) {
  
  // 从pojo 取出需要group by 的字段 list
  List<Object> key = buildPrimaryKey(e);
  
  // primaryMap 是存储结果的Map
  T value = primaryMap.get(key);
  
  // 如果从存储结果找到有相应记录
  if (value != null) {
    for (String elem : sumValues) {
      // 反射获取对应的字段,做累加处理
      Field field = getDeclaredField(elem, e);
      if (field.get(e) instanceof Integer) {
        field.set(value, (Integer) field.get(e) + (Integer) field.get(value));
      } else if (field.get(e) instanceof Long) {
        field.set(value, (Long) field.get(e) + (Long) field.get(value));
      } else {
        throw new RuntimeException("类型异常,请处理异常");
      }
    }
    
    // 处理时间记录
    Field field = getDeclaredField("updated", value);
    if (null != field) {
      field.set(value, DateTimeUtils.getCurrentTime());
    }
  } else {
    // group by 字段 第一次进来
    try {
      primaryMap.put(key, Tclone(e));
      createdMap.put(key, DateTimeUtils.getCurrentTime());
    }catch (Exception ex) {
      log.info("first put value error {}" , e);
    }
  }
}

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java3y 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档