V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Braisdom
V2EX  ›  程序员

Lombok 模式在 ORM 中的应用

  •  3
     
  •   Braisdom ·
    braisdom · 2020-12-05 21:22:12 +08:00 · 1643 次点击
    这是一个创建于 1449 天前的主题,其中的信息可能已经有所发展或是发生改变。

    对于 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 都是动态生成的

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

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

    还是希望类似 mybatisplus 一样,支持 Object::field 这种方式,后期字段名称修改也能很方便
    Braisdom
        4
    Braisdom  
    OP
       2020-12-06 09:30:44 +08:00
    @night98 你应该没有看我的项目,这次不准备介绍 Complex SQL programming,有兴趣去 github 上看一下,我做的比 MyBatis 强特别多。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2859 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:19 · PVG 22:19 · LAX 06:19 · JFK 09:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.