项目中,有一个需求,场景是这样的,有很多类型的数据比如:客运站,火车站,高速站等,他们都分别存在不同的数据库表中,在使用excel往这些表中导入数据的时候,需要做去重验证(假设是根据name1和name2字段去重)
1.首先想到的是,在每个Controller层,查询对应的表进行对比,校验是否有重复
由于有八九张表,写着发现除了Entity和tableName不一样,查重逻辑几乎一模一样
2.怎样才能把逻辑部分提取出来复用呢,这样就不用重复劳动了。问题的关键是需要提取出Entity列表中的name1和name2,组合成新的数据集合,这样就把不同类型的数据整合成一类:StationCheckBo.class
这里可以可以使用反射进行获取:
```
protected <T, E> StationCheckResultBo checkRepeat(List datas, StationCheckMapper stationCheckMapper, Class clazz) {
List checkBos = IntStream.range(0, datas.size()).mapToObj(i ->
new StationCheckBo(i, (String) ReflectUtil.getFieldValue(datas.get(i), "fieldName"), (String) ReflectUtil.getFieldValue(datas.get(i), "fieldName")))
.toList();
函数式接口
最近看Hutool代码的时候,发现作者源码中使用了很多函数式接口
比如:
```
public static <T extends CharSequence, X extends Throwable> T notEmpty(T text, Supplier errorSupplier) throws X {
if (StrUtil.isEmpty(text)) {
throw errorSupplier.get();
}
return text;
}
我不敢把房间打扫得太干净,我怕房间只剩下我一个垃圾。
常用的小工具
图片压缩 https://www.ticompressor.com/online/
抠图 https://img.ly/showcases/cesdk/background-removal/web
矢量图1 https://www.iconfont.cn/
矢量图2 https://yesicon.app/
开源的画流程图工具 https://pddon.com/
文字识别 https://ocr.plantree.me/ocr
bt工具 https://anybt.eth.limo/#/
跨平台离线共享文件app https://localsend.org/#/
在线画板 https://pictode.com/
通过网卡MAC地址,可以查到厂商和网卡信息 https://maclookup.app/
下载工具 https://www.freedownloadmanager.org/zh/
AI图文生成 https://sdxlturbo.ai/
工具库在线检索 https://www.apigpts.dev/tools
gradle插件镜像1 https://mirrors.cloud.tencent.com/gradle/
gradle插件镜像2 https://services.gradle.org/distributions/
熊猫搜书 https://xmsoushu.com/#/
先下结论
ViewModel的作用,为UI层提供数据,并且能较长时间保存数据直到Activity最终Finished,什么叫最终Finished呢,我的理解是Activity被内存彻底回收。