【Java】【对线面试官】 Java 泛型

【Java】【对线面试官】 Java 泛型

【Java】【对线面试官】 Java 泛型

【Java】【对线面试官】 Java 泛型

【Java】【对线面试官】 Java 泛型

【Java】【对线面试官】 Java 泛型

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

}

【Java】【对线面试官】 Java 泛型

【Java】【对线面试官】 Java 泛型

// 传入 需要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);

}

}

}

【Java】【对线面试官】 Java 泛型

【Java】【对线面试官】 Java 泛型

【Java】【对线面试官】 Java 泛型

【Java】【对线面试官】 Java 泛型

文章以纯面试的角度去讲解,所以有很多的细节是未铺垫的。

比如说反射和泛型基础,这些在【Java3y】都有过详细的基本教程甚至电子书,我就不再详述了。

欢迎关注我的微信公众号【面试造火箭】来聊聊Java面试

【Java】【对线面试官】 Java 泛型

以上是 【Java】【对线面试官】 Java 泛型 的全部内容, 来源链接: utcz.com/a/89715.html

回到顶部