如果有个 CRUD 工具会不会有兴趣用? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
iceteacover
V2EX    Java

如果有个 CRUD 工具会不会有兴趣用?

  •  
  •   iceteacover
    sunjirepo Apr 15, 2021 4348 views
    This topic created in 1841 days ago, the information mentioned may be changed or developed.

    公司自研一款基于 Mybatis-Generator 的 CRUD 代码生成工具,能够自动生成 Controller-Business-Service-Mapper 四层。生成各层的出入参数和转换类(基于 JSON )。

    使用下来非常快,CRUD 几乎不用再添加新代码。

    大多数 Java 程序员开发工作避免不了 CRUD,故打算花些时间开源,不知道会不会有人用以及是否有类似的开源产品。

    约定数据库表结果必有 ID/DELETED/CREATED_AT/CREATED_BY/MODIFIED_AT/MODIFIED_BY 6 个字段,且 DELETED 字段类型同 ID 字段( bigint ),deleted=0 表示未删除,deleted=id 值表示删除。

    PS:尝试过 Mybatis-Plus 和 单纯 Mybatis-Generetor,还是要写部分代码。 PPS:分层模型各有各的习惯和说法,但用 CRUD 工具后基本不在有争论,无形消弭。

    29 replies    2021-04-23 16:33:06 +08:00
    mlcq
        1
    mlcq  
       Apr 15, 2021   1
    没兴趣,你这个工具怎么解决连表的问题,要是不需要连表,mp 都能解决了,你这个意义何在呢
    wolfie
        2
    wolfie  
       Apr 15, 2021   1
    这种代码生成挺多的,而且没难度。
    lowic
        3
    lowic  
       Apr 15, 2021   1
    如果只有比较基础的功能的话,mp 应该已经做的够好了
    akiakiseofficial
        4
    akiakiseofficial  
       Apr 15, 2021
    收益不是很明显,相反想用这个工具还被限定了数据库字段。

    另外,关于分层,除非是从零新建的项目,不然分层还是按照原有的模式来,要不会被后边维护的人骂死。
    est
        5
    est  
       Apr 15, 2021   1
    你说的这种 「 CRUD 工具」 本质就是建立 RDBMS 视图

    遇到视图不能解决的复杂逻辑,你的工具一样解决不了。
    huifer
        6
    huifer  
       Apr 15, 2021   1
    catchexception
        7
    catchexception  
       Apr 15, 2021   1
    多年没写过 CRUD 了。。。
    hb0730
        8
    hb0730  
       Apr 15, 2021   1
    用 mp 自己在封装一下,从 controller 到 mapper 就都有了,在扩展一下 mp 的代码生成
    fy
        9
    fy  
       Apr 15, 2021   1
    作为一个 crud 框架作者,我意识到框架越是工于设计,反而会带来越高的使用成本……所以我计划全部生成 json schema 一把梭了
    yungo8
        10
    yungo8  
       Apr 15, 2021 via Android   1
    easy-code

    然后自己写 groovy 模板也可以呀
    gongym
        11
    gongym  
       Apr 15, 2021   1
    yxx1993
        12
    yxx1993  
       Apr 15, 2021   1
    Imindzzz
        13
    Imindzzz  
    PRO
       Apr 15, 2021   1
    很难做到又通用又简单

    有必要在自己公司小范围封装一个,推广开源我觉得没多大市场。
    iceteacover
        14
    iceteacover  
    OP
       Apr 15, 2021
    @mlcq 这个工具不能解决连表问题,多表合并成前端对象还需要手工写。 我现在一般不连表查,单表查完再走第二条 SQL,把 sql 的连表放在内存,表查询尽量简单。
    iceteacover
        15
    iceteacover  
    OP
       Apr 15, 2021
    @lowic mp 的确功能强大,但是有一个删除字段,只能用 0/1 或者 时间字段,我希望用 id 的 bigint,避免唯一索引和逻辑删除问题 https://cloud.tencent.com/developer/article/1531915 。这种逻辑如果写在自己的 crud 当中就很方便,相比较改造 mp 。
    iceteacover
        16
    iceteacover  
    OP
       Apr 15, 2021
    @fy 真的没有狗头在最后吗?大佬请不要放弃...
    iceteacover
        17
    iceteacover  
    OP
       Apr 15, 2021
    @xd199153 谢谢提点,公司内部用大概是最大价值,开源反倒能用的少。
    iceteacover
        18
    iceteacover  
    OP
       Apr 15, 2021   1
    @catchexception 恭喜脱离苦海
    iceteacover
        19
    iceteacover  
    OP
       Apr 15, 2021
    @gongym go 大佬你好,我还在 Java 里挣扎,顺带问下 Java 转 Go 需要补哪些知识,到可用程度一般学大概要多久(天资一般偏下,写了几年 Java )
    iceteacover
        20
    iceteacover  
    OP
       Apr 15, 2021
    @huifer jpa 大佬好,公司用 mybatis 惨。。。我看国外的程序员很多用 jpa,不知道为啥国内的几家公司都选择了 mybatis 。
    fy
        21
    fy  
       Apr 15, 2021
    @iceteacover 我真的计划这么搞,不过我是 python 实现的。但现在说起来自己用 python 的机会也不多了,主力是 ts 和 go
    iceteacover
        22
    iceteacover  
    OP
       Apr 16, 2021 via iPhone
    @fy 全栈牛逼,最近半年在公司写 react,感觉前端是很不一样的思维,有帮助。问下用 go 方便吗?要不要造轮子(目前主力 Java,有事实上的框架标准)?
    huifer
        23
    huifer  
       Apr 16, 2021   1
    mybatis 和 JPA 应该大差不差没必要太过于纠结使用谁,要说存在迁移数据库的话我可能选择 JPA 。mybatis 版本的 CRUD 插件也有 https://gitee.com/pychfarm_admin/crud @iceteacover
    ychost
        24
    ychost  
       Apr 16, 2021
    生成代码的一律拉黑,万一逻辑变复杂还是挺蛋疼的,最好是用 JPA 或者 Mybatis-Plus,tk.mybatis 之类的,隐藏细节,提供扩展性,
    Kaiv2
        25
    Kaiv2  
       Apr 16, 2021
    https://github.com/JavaHello/erm-generator
    一个简单的 dao 层工具,支持 sql 差异输出。
    clf
        26
    clf  
       Apr 16, 2021
    Mybatis-Plus 的代码生成器生成 Service-Mapper 我觉得就够了……因为对外肯定是 VO 封装的。

    要做进一步的统一管理,比如我设计的基类里就有 deleteFlag 、createTime 、updateTime 、id,四个字段,删除的时候用 MP 的逻辑删除配置,0L 是未删除,时间戳是已经删除。Time 字段都是用 MP 自带的注入方法注入。配置完一个 BaseModel 类后,其他全部的类继承它就好了。
    fy
        27
    fy  
       Apr 17, 2021
    @iceteacover golang 写 web 的话感觉和 js 的 koa,或者是 python 的 flask 差不多,应该没 Java 那么系统化。轮子倒也不用怎么弄
    iceteacover
        28
    iceteacover  
    OP
       Apr 18, 2021 via iPhone
    @fy 谢谢
    liian2019
        29
    liian2019  
       Apr 23, 2021
    我也写了一个 ,来应付公司统计代码量的问题
    About     Help     Advertise     Blog     API     FAQ     Solana     987 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 64ms UTC 18:17 PVG 02:17 LAX 11:17 JFK 14:17
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86