for...in、for...of、for await...of
处世应当谦虚,切忌轻人傲世。——佚名 简单说下区别: for...in遍历出来的是key 12345678910var obj = {a:1, b:2, c:3};for (var prop in obj) { console.log("obj." + prop + " = " + obj[prop]);}// Output:// "obj.a = 1"// "obj.b = 2"// "obj.c = 3" for...of遍历出来的是元素 123456789const array1 = ['a', 'b', 'c'];for (const element of array1) { console.log(element);}// Expected output: "a"// Expected output: "b&quo...
svgator
不要“在爱情里浪费着朝阳般的生命的火光”。——马雅可夫斯基 分享一个能制作动画svg的网站:https://www.svgator.com/ 注册: 使用
promisees
爱情是没有悲剧的。唯有缺乏爱情才有悲剧。——泰斯嘉 分享一个网站:https://bevacqua.github.io/promisees/ github:https://github.com/bevacqua/promisees 这个网站可以帮我们清晰地看到Promise的执行过程 非常的有趣和实用
dataCompare
真正的好人,是那个和所有的大家认为坏的人在一起的人。——纪伯伦 分享一个项目:https://gitee.com/dromara/data-compare 介绍dataCompare 是一个大数据数据比对和数据探测平台 (1)支持hive表数据比对,mysql、Doris 数据比对,实现自动化配置进行数据比对,避免频繁写sql 进行处理 (2)支持少量配置即可实现数据探测 对比结果展示:
mybatis的call-setters-on-nulls
一个结婚以后的朋友,无论如何不是从前的朋友了,男人的灵魂现在羼入了一些女人的灵魂。——罗曼·罗兰 我们在使用org.apache.ibatis.session.SqlSession#selectMap(java.lang.String, java.lang.String) 时会遇到字段值为null的时候,这个时候返回的map会丢失掉对应的entry节点 只需要配置mybatis.configuration.call-setters-on-nulls为true即可保留对应的entry
mp中typeHandler自动获取字段类型
相熟的人表现出恭而敬之的样子总是叫人感到可笑。——歌德 一般我们在实体类上指定 @TableName(autoResultMap = true) 即可使用typeHandler指定转换器,然后就可以自动转换了 例如List<XXX>的Json可以如下使用: 12@TableField(typeHandler = JsonListHandler.class)private List<CalcUnitEnum> calcUnits; 这里JsonListHandler如下,JacksonUtil就懒得赘述了: 1234567891011121314151617181920212223242526import com.baomidou.mybatisplus.extension.handlers.AbstractJsonTypeHandler;import java.util.List;/** * @author VampireAchao * @since 2023/3/20 17:43 */public class JsonListHandler<...
svelte
我宁肯忘掉亏欠自己的而不愿忘掉亏欠别人的。——贝多芬 分享一个前端框架svelte 官网:https://svelte.dev/ 仓库链接:https://github.com/sveltejs/svelte 语法非常的简单容易上手 12345<script> let name = 'world';</script><h1>Hello {name}!</h1> 同样是响应式 非常的有意思 使用也很简单 1234npm create svelte@latest myappcd myappnpm installnpm run dev
关联更新封装(三)
太如意的生活便是平凡的生活,太容易获得的东西,便不是贵重的东西。——茅盾 今天是另外一种类型的关联更新封装 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768public static <T, K extends Comparable<? super K> & Serializable, S> BaseDbBO<S> saveSub(SubBO<T, K, S> bo) { val subIds = Steam.of(bo.getMainList()) .flat(data -> Steam.of(bo.getSubIdGetters()).map(f -> f.apply(data))) .nonNull().toList(); val su...
动态mapper优先级问题
甚至不愿听朋友说真话的人,是真正不可救药的人——西塞罗 之前使用byte-buddy实现mybatis-plus动态mapper 但是使用过程中发现一个问题,相关的issue链接: https://gitee.com/VampireAchao/stream-query/issues/I6EJ27 在项目中已经定义了Mapper,如果在动态mapper已经注入的情况下,没法再通过Database.execute方法拿到,而是拿到的动态Mapper 进而导致大部分只要是基于execute方法的函数都是这样 于是为了解决这个问题,在DefaultSqlInjector处进行了处理 在io.github.vampireachao.stream.plugin.mybatisplus.engine.configuration.StreamPluginAutoConfiguration下,当前的代码如下: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051...
关联更新封装(二)
仁者爱人,有礼者敬人。爱人者,人恒爱之;敬人者,人恒敬之。——孟子 前两天写了关联表更新封装 今天写个另一种类型的 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108public static <T, K extends Comparable<? super K> & Serializable, A, L extends Comparable<? super L> & Serializable>BaseDbBO<A> saveAttach(AttachBO<T, K, A> bo) &...
