Lombok 模式在 ORM 中的应用

2020-12-05 21:22:12 +08:00
 Braisdom

对于 Lombok,有人爱它,当然也有人十分讨厌它,爱它的人觉得使得代码变得简洁易读,讨厌它的人觉得破坏了 Java 的编程思想,在编译期增加了很多代码。

对于我来说既不爱它,也不讨厌它,只是觉得程序员的工作太过繁杂,重复的工作量太多,只是想通过我的项目释放一些程序员的工作。

项目地址: https://github.com/braisdom/ObjectiveSql (感兴趣的为国人的开源项目点赞,我的目标是超越 MyBatis, JooQ 等 ORM 框架,成为 Java 领域的主流 ORM 框架)

前面已经有过一次讨论了,只是希望更人关注项目,目前已经 800+ stars

简单展示一下,更多请访问项目主页:

@DomainModel
public class Member {
    private String no;
    
    @Queryable
    private String name;
    private Integer gender;
    private String mobile;
    private String otherInfo;

    @Relation(relationType = RelationType.HAS_MANY)
    private List<Order> orders;
}

简单查询

Member.countAll();
Member.count("id > ?", 1);
Member.queryByPrimaryKey(1);
Member.queryFirst("id = ?", 1);
Member.query("id > ?", 1);
Member.queryAll();

关联查询

Member.queryAll(Member.HAS_MANY_ORDERS);
Member.queryByPrimary(1, Member.HAS_MANY_ORDERS);
Member.queryByName("demo", Member.HAS_MANY_ORDERS);

分页查询

Page page = Page.create(0, 10);
PagedList<Member> members = Member.pagedQueryAll(page, Member.HAS_MANY_ORDERS);

注意:示例中的 各类查询 method 和 Member.HAS_MANY_ORDERS 都是动态生成的

1644 次点击
所在节点    程序员
4 条回复
salaryfly
2020-12-05 21:24:11 +08:00
很好的想法,支持一下!
Braisdom
2020-12-05 21:25:08 +08:00
@salaryfly 感谢支持,有兴趣加我微信听听你的建议,wx: braisdom
night98
2020-12-05 21:43:17 +08:00
简单看了下,感觉和 mybatis-dynamic-sql 有点像,看起来还是不错的样子,但还是希望少用字符串方式,例如:

```Member.count("id > ?", 1);```

还是希望类似 mybatisplus 一样,支持 Object::field 这种方式,后期字段名称修改也能很方便
Braisdom
2020-12-06 09:30:44 +08:00
@night98 你应该没有看我的项目,这次不准备介绍 Complex SQL programming,有兴趣去 github 上看一下,我做的比 MyBatis 强特别多。

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

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

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

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

© 2021 V2EX