1
Sepping OP 有点失落,准备回家咯~不过还是想让自己做的东西见见光,可能也有长期发展这个框架的打算。本人菜鸟一枚,欢迎各种建议。
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 一下吧~ |
2
Sepping OP 真对不起各位!第一次再 V2EX 发帖不知道要用 base64,用了 base64 从记事本里拷文本的时候又没发现排版已经乱了。。。
|
3
Pyjamas 2019-07-19 06:52:48 +08:00
建议搞清楚为什么用 base64...
|
4
zvcs 2019-07-19 07:03:26 +08:00 via iPhone 6
我感觉那个人又要来了.....
|
5
alw 2019-07-19 07:30:37 +08:00
PS:你可以给你的帖子 append,再发一下内容。
|
6
nvioue 2019-07-19 07:35:43 +08:00
所以找工作失败什么情况
|
7
lhx2008 2019-07-19 08:29:44 +08:00
Jooq 了解一下
|
8
breezeFP 2019-07-19 08:53:57 +08:00
#7 我也想推荐来着,被你抢先了
|
14
breezeFP 2019-07-19 14:00:58 +08:00
看清楚,我说的是 7 楼,没说你,这不冲突吧......?
|
16
cominghome 2019-07-19 14:36:48 +08:00
orm ?
|
17
Sepping OP @cominghome 不知道能不能算 orm,因为很多东西都没加进去,事务控制之类的
|
18
sarices 2019-07-19 15:27:03 +08:00
放个 base64 出来让人去 star?
|
20
glaucus 2019-07-19 15:35:12 +08:00
URL 干嘛要 BASE64。。。又不是你的个人信息
AND 我曾经找不到工作待业 3 个月,是我人生总最灰暗的日子,所以 LZ 一定不要气馁,坚持下去~有时候并不是你不够优秀,而是你差一点运气。 |
21
Sepping OP @glaucus 因为我刚发帖的时候有 30 天注册限制,把 URL 换成 base64 才能发出来。
很感谢你的鼓励,只是现在没钱交房租了……想着如果干不了程序员这行了,也可以继续发展这个框架,所以壮着胆子来这里宣传了一波 |
24
glaucus 2019-07-19 15:45:02 +08:00
@Sepping #21 别这样想,我当初也是交不起房租,还有花呗要换,幸好和我哥一起租的,他能帮我兜着点房租,不然我都快去要饭了,最艰难的时候不愿意找家里要钱,靠卖之前的电子产品过下去,一天只花 10 块,也想过接收朋友介绍的其他行业的工作,甚至是当服务员暂时解决生计,最后还是坚持下来了,在这个阶段往往容易怀疑自己,不过还是我想说的,你不是不够优秀,你只是差点运气而已,回家好好休息一下,重新整装待发,坚持下去,以后你会感谢当初坚持的自己。
|
25
Sepping OP @sarices 另外比起 star,我更希望有人能看看代码给点意见。目前这个框架离能让人使用还很远,能让人用了自然 star 不会少,现在拿一两个 star 没啥意思
|
28
Samuelcc 2019-07-19 21:40:59 +08:00 via Android
觉得 jooq 已经比较完整了吧
|
30
enen123456789 2019-08-11 11:36:29 +08:00 via Android
哪个城市啊?一年经验真的这么难嘛,焦虑
|