找工作失败,推广一下自己的开源框架吧

2019-07-19 03:40:54 +08:00
 Sepping
4584 次点击
所在节点    开源软件
30 条回复
Sepping
2019-07-19 03:41:48 +08:00
有点失落,准备回家咯~不过还是想让自己做的东西见见光,可能也有长期发展这个框架的打算。本人菜鸟一枚,欢迎各种建议。

aHR0cHMlM0EvL2dpdGh1Yi5jb20vU2VwaW5nL0pRTA==

主要功能:这是一个可以让你用 Java 8 以上的方法引用来写 SQL 的框架。例如,假如你要写一句 SQL:SELECT * FROM user WHERE user.name = "John"

你可以这样来写:JQL.from(User.class) .where((root1, conditionChain) -> { return conditionChain .equal(root1.getAttribute(User::getName), "John"); }); 其中,User 是 user 表对应的实体类,有 get/set 方法。

为什么要用“方法引用”呢?我只能说,初衷是为了能用 IDE 里的自动提示……

部件构成:1、实体类 需要在类上标注 @Table 注解,表明这是与数据库表对应的实体类。实体类须有 get/set 方法,在 get 方法上可以用 @Column 注解标明该字段的特殊功能(插入时写默认值,逻辑删除标识等等)。

2、实体类解析器 实体类需要经 EntityResolver 解析,得到实体类的通用抽象 Entity<t>,并存放于 EntityRepository 中。 我默认提供了一个用 ASM 解析的解析器,AnnotationBasicASMResolver。</t>

3、JQL JQL 就是用来写 SQL 的类了。很抱歉,目前只支持 SELECT 语句和 MySQL 的部分语法。。。

4、执行 SQL 在接口 SQLExecutor 中实现,查询结果以 List<CompositeEntity<t>>返回。</t>

5、结果 结果封装为 CompositeEntity<t>的形式。CompositeEntity 是根据查询语句的 join 来封装的,例如,对于以下查询:SELECT * FROM user JOIN city ON city.name = user.city WHERE user.name = "John" 然后,得到了一个 CompositeEntity<user>对象 userResult,你可以用 userResult.getJoinEntities(City.class)来获得这条 user 关联的所有 city。 我默认提供了一个较为简陋的实现。</user></t>

再杂谈一下吧。这个框架的具体实现其实很早就做出来了( master )分支,但是发现想扩展一个功能时存在了困难,就着手改造,把部件全部抽象化接口化。这才发现接口化、定义规范是最难的事情。当然,目前的组件结构我也不是很满意,主要在于复合条件链( ConditionChain )这个地方。有兴趣的大佬可以去看看代码,指点迷津一下。

以上,觉得有意思就 star 一下吧~
Sepping
2019-07-19 03:45:06 +08:00
真对不起各位!第一次再 V2EX 发帖不知道要用 base64,用了 base64 从记事本里拷文本的时候又没发现排版已经乱了。。。
Pyjamas
2019-07-19 06:52:48 +08:00
建议搞清楚为什么用 base64...
zvcs
2019-07-19 07:03:26 +08:00
我感觉那个人又要来了.....
alw
2019-07-19 07:30:37 +08:00
PS:你可以给你的帖子 append,再发一下内容。
nvioue
2019-07-19 07:35:43 +08:00
所以找工作失败什么情况
lhx2008
2019-07-19 08:29:44 +08:00
Jooq 了解一下
breezeFP
2019-07-19 08:53:57 +08:00
#7 我也想推荐来着,被你抢先了
Sepping
2019-07-19 13:43:04 +08:00
@lhx2008 是,有参考过 Jooq。不过我觉得我的做法更有意思哈哈
Sepping
2019-07-19 13:43:35 +08:00
@Pyjamas 防广告吗?
Sepping
2019-07-19 13:44:08 +08:00
@zvcs 谁呢
Sepping
2019-07-19 13:45:03 +08:00
@nvioue 投简历内推都少有回应,唯一有回应的一个昨天电话面试感觉凉了
Sepping
2019-07-19 13:56:16 +08:00
@breezeFP 老哥,这不冲突吧……?
breezeFP
2019-07-19 14:00:58 +08:00
看清楚,我说的是 7 楼,没说你,这不冲突吧......?
Sepping
2019-07-19 14:14:30 +08:00
@breezeFP 我理解错了,sry
cominghome
2019-07-19 14:36:48 +08:00
orm ?
Sepping
2019-07-19 15:22:34 +08:00
@cominghome 不知道能不能算 orm,因为很多东西都没加进去,事务控制之类的
sarices
2019-07-19 15:27:03 +08:00
放个 base64 出来让人去 star?
Sepping
2019-07-19 15:32:21 +08:00
@sarices = = 啥意思呢……我没有骗 star 的意思啊
glaucus
2019-07-19 15:35:12 +08:00
URL 干嘛要 BASE64。。。又不是你的个人信息
AND 我曾经找不到工作待业 3 个月,是我人生总最灰暗的日子,所以 LZ 一定不要气馁,坚持下去~有时候并不是你不够优秀,而是你差一点运气。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/584276

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX