公司自研一款基于 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 工具后基本不在有争论,无形消弭。
1
mlcq 2021-04-15 14:24:23 +08:00 1
没兴趣,你这个工具怎么解决连表的问题,要是不需要连表,mp 都能解决了,你这个意义何在呢
|
2
wolfie 2021-04-15 14:30:57 +08:00 1
这种代码生成挺多的,而且没难度。
|
3
lowic 2021-04-15 14:40:21 +08:00 1
如果只有比较基础的功能的话,mp 应该已经做的够好了
|
4
xlui 2021-04-15 14:50:03 +08:00
收益不是很明显,相反想用这个工具还被限定了数据库字段。
另外,关于分层,除非是从零新建的项目,不然分层还是按照原有的模式来,要不会被后边维护的人骂死。 |
5
est 2021-04-15 15:05:39 +08:00 1
你说的这种 「 CRUD 工具」 本质就是建立 RDBMS 视图
遇到视图不能解决的复杂逻辑,你的工具一样解决不了。 |
6
huifer 2021-04-15 15:19:14 +08:00 1
|
7
catchexception 2021-04-15 15:22:37 +08:00 1
多年没写过 CRUD 了。。。
|
8
hb0730 2021-04-15 15:22:39 +08:00 1
用 mp 自己在封装一下,从 controller 到 mapper 就都有了,在扩展一下 mp 的代码生成
|
9
fy 2021-04-15 15:23:10 +08:00 1
作为一个 crud 框架作者,我意识到框架越是工于设计,反而会带来越高的使用成本……所以我计划全部生成 json schema 一把梭了
|
10
yeqizhang 2021-04-15 15:31:15 +08:00 via Android 1
easy-code
然后自己写 groovy 模板也可以呀 |
11
gongym 2021-04-15 16:15:40 +08:00 1
|
12
yxx1993 2021-04-15 16:49:37 +08:00 1
|
13
Imindzzz 2021-04-15 17:15:18 +08:00 1
很难做到又通用又简单
有必要在自己公司小范围封装一个,推广开源我觉得没多大市场。 |
14
iceteacover OP @mlcq 这个工具不能解决连表问题,多表合并成前端对象还需要手工写。 我现在一般不连表查,单表查完再走第二条 SQL,把 sql 的连表放在内存,表查询尽量简单。
|
15
iceteacover OP @lowic mp 的确功能强大,但是有一个删除字段,只能用 0/1 或者 时间字段,我希望用 id 的 bigint,避免唯一索引和逻辑删除问题 https://cloud.tencent.com/developer/article/1531915 。这种逻辑如果写在自己的 crud 当中就很方便,相比较改造 mp 。
|
16
iceteacover OP @fy 真的没有狗头在最后吗?大佬请不要放弃...
|
17
iceteacover OP @xd199153 谢谢提点,公司内部用大概是最大价值,开源反倒能用的少。
|
18
iceteacover OP @catchexception 恭喜脱离苦海
|
19
iceteacover OP @gongym go 大佬你好,我还在 Java 里挣扎,顺带问下 Java 转 Go 需要补哪些知识,到可用程度一般学大概要多久(天资一般偏下,写了几年 Java )
|
20
iceteacover OP @huifer jpa 大佬好,公司用 mybatis 惨。。。我看国外的程序员很多用 jpa,不知道为啥国内的几家公司都选择了 mybatis 。
|
21
fy 2021-04-15 21:22:23 +08:00
@iceteacover 我真的计划这么搞,不过我是 python 实现的。但现在说起来自己用 python 的机会也不多了,主力是 ts 和 go
|
22
iceteacover OP @fy 全栈牛逼,最近半年在公司写 react,感觉前端是很不一样的思维,有帮助。问下用 go 方便吗?要不要造轮子(目前主力 Java,有事实上的框架标准)?
|
23
huifer 2021-04-16 08:48:41 +08:00 1
mybatis 和 JPA 应该大差不差没必要太过于纠结使用谁,要说存在迁移数据库的话我可能选择 JPA 。mybatis 版本的 CRUD 插件也有 https://gitee.com/pychfarm_admin/crud @iceteacover
|
24
ychost 2021-04-16 09:43:50 +08:00
生成代码的一律拉黑,万一逻辑变复杂还是挺蛋疼的,最好是用 JPA 或者 Mybatis-Plus,tk.mybatis 之类的,隐藏细节,提供扩展性,
|
25
Kaiv2 2021-04-16 10:37:42 +08:00
https://github.com/JavaHello/erm-generator
一个简单的 dao 层工具,支持 sql 差异输出。 |
26
clf 2021-04-16 10:48:13 +08:00
Mybatis-Plus 的代码生成器生成 Service-Mapper 我觉得就够了……因为对外肯定是 VO 封装的。
要做进一步的统一管理,比如我设计的基类里就有 deleteFlag 、createTime 、updateTime 、id,四个字段,删除的时候用 MP 的逻辑删除配置,0L 是未删除,时间戳是已经删除。Time 字段都是用 MP 自带的注入方法注入。配置完一个 BaseModel 类后,其他全部的类继承它就好了。 |
27
fy 2021-04-17 21:41:09 +08:00
@iceteacover golang 写 web 的话感觉和 js 的 koa,或者是 python 的 flask 差不多,应该没 Java 那么系统化。轮子倒也不用怎么弄
|
28
iceteacover OP @fy 谢谢
|
29
liian2019 2021-04-23 16:33:06 +08:00
我也写了一个 ,来应付公司统计代码量的问题
|