如果,本人搞 java ,请教有没有这样的工具。
1
justlikemaki 2015-09-08 18:30:22 +08:00
eclipse 加 hibernate 就可以反向映射
|
2
jadetang OP @justlikemaki 我是想生成 service , dao 啊之类的代码
|
3
denger 2015-09-08 19:07:38 +08:00
生成的代码大多数不仅没用,还增加维护成本,个人极其反对代码自动生成。
无非就是想解决大量代码重复不想写的问题呗?但是生成代码方式是最差的解决方案。完全可以从设计角度去解决。 |
4
ichou 2015-09-08 19:21:17 +08:00
大 rails 欢迎你
|
6
neoblackcap 2015-09-08 19:32:57 +08:00
@denger 要维护的应该是 code generator 而不是生成的代码,难道你还要手写 bytecode?
|
7
wdlth 2015-09-08 19:37:39 +08:00
数据库生成 Model ?
|
8
guoqiao 2015-09-08 19:56:07 +08:00 via iPhone
django: python manager.py inspectdb
|
9
jadetang OP @ichou 应该就是 ror 那种方式吧。有一个表的创建 sql ,然后自动生成增删改查的 service , dao , model 之类的 java 类。
|
10
denger 2015-09-08 21:31:25 +08:00
@neoblackcap 你的意思是生成基础的 CURD 之后,如果某个 Service 业务有调整,应该去修改代码生成器然后重新生成一下,而不是去修改具体的某个业务代码???开玩笑吧?
|
11
denger 2015-09-08 21:38:49 +08:00
@jadetang spring-roo 可以满足你的需求 http://projects.spring.io/spring-roo/
|
12
neoblackcap 2015-09-08 21:42:45 +08:00
@denger 有点那个意思,但是又不全是。若是业务没有变得话,同样的业务需要产生同样的代码,若是变了,这些代码自然也会变。不管你手动改还是机器生成也是一样对不对?
为什么很多人排斥自动化生成的代码?主要是那些 generator 写得太烂了,就好比你的业务变更了,你也不会直接改 bytecode ,而是改源代码一样。 自动化生成的代码没有错,错是那些生成器太烂了,明明若是只生成基础部分代码还是很靠谱的,偏偏要求全。还有就是若是你的代码耦合度太高了,但是 Java 不是一般会用 Data Mapping 的模式吗? DAO 不是用来解耦的? 还有就是哪怕上了代码生成器也没关系啊,那只不过是实现了一门 DSL 而已。维护的只不过变成了更高级的语言以及 DSL (这个若是写得好,自然不用维护) |
13
qingxp9 2015-09-08 21:57:47 +08:00
一看这标题就想到 rails generate scaffold
|
14
OpooPages 2015-09-08 22:13:51 +08:00 via Android
dao 可以生成,但 service 层通常是写业务逻辑的地方,是一个系统最需要手工编码的层,似乎自动生成比较不妥吧,除非你的业务逻辑就是跟着数据表结构走的。
|
15
denger 2015-09-08 22:17:14 +08:00
@neoblackcap code converter (java->bytecode, php->c++ ) 和 code generator 本身就是不是一个概念的上东西。
|
16
neoblackcap 2015-09-08 22:26:41 +08:00
@denger 然而楼主不是问 SQL->Java 的工具么?这真的不是 DSL 吗?
|
17
denger 2015-09-08 22:33:27 +08:00
SQL -> JAVA 怎么可能是 DSL , 一个最基础的存储,离业务逻辑距离本身非常远,即使要 DSL ,也不应该是从 SQL 的层面做,而是从具体领域或业务层面,而不用管在乎用的是什么存储。
楼主要的只是一个脚手架的生成器,这些都扯远了.... |
18
zonghua 2015-09-08 22:34:05 +08:00 via iPhone
hibernate tools 吖,就是生成 jpa 映射,然后在看情况修改。难道真的要手动写几十个表的映射?一个属性名拼错了就够玩的了。
|
23
incompatible 2015-09-09 02:11:18 +08:00
@denger 就是 DSL 这里的 D 指的不是楼主的代码的业务领域,这里的 D 指的是生成代码这件事
@jadetang 下面这两篇文章我觉得对你有一些参考价值 http://shenfeng.me/intro-api-kit.html http://shenfeng.me/java-jdbc-generate-boilerplate.html |
24
hzlez 2015-09-09 09:32:21 +08:00
有!
用过 lombok 的话,应该知道, java 可以有一个 annotationProcessor 的东西在编译期做事情。 你的目的,可以通过编辑期根据数据库结构来自动生成对应的 dao , entity 来实现。 需要考虑的问题就是: 如何支持业务的自定义需求。如何集成默认生成的代码和你自己需要手动添加的代码等。 我自己做过一个工具,没有走这么远,只是根据一些默认规则的 mapper 命名来生成对应的 sql 资源文件。 有兴趣可以讨论讨论。 |
25
jadetang OP @zonghua 你说的是 rapid frame work 吗?我之前的老大确实不喜欢写文档,所以我准备重新搞一个
|
26
phx13ye 2015-09-09 10:53:13 +08:00
mybatis generator
``` @Data public class User { /** * This field was generated by MyBatis Generator. * This field corresponds to the database column users.id * * @mbggenerated */ private Integer id; /** * This field was generated by MyBatis Generator. * This field corresponds to the database column users.name * * @mbggenerated */ private String name; } ``` |
27
ice2015 2015-09-09 15:19:17 +08:00
你们的代码比英语还难
|
28
thinkmore 2015-10-21 10:22:26 +08:00
mybatis/ibatis generator
|
29
jadetang OP @thinkmore 话说找不到合适的,我自己造了一个轮子 http://v2ex.com/t/228379
|
30
coolcooldee 2017-09-10 23:23:58 +08:00
@jadetang 似乎可以满足你的需要: https://github.com/coolcooldee/sloth
|
31
zdcin 2018-05-24 16:04:21 +08:00
listcode 代码生成云服务,只需要提供数据库模型,前后端代码一站生成,支持 laravel,thinkphp,java,python,nodejs,vue 等框架, 完成度高,翻页,多条件查询,外键编辑,输入检查都有了
高完成度的代码生成服务 前后端代码、js、UI 一站生成 翻页,多条件联合查询 外键关联编辑、展示 输入验证,错误提示 常见类型个性化编辑、展示 完整 REST API 接口 多种开发技术支持 支持常用语言和技术框架,支持前后端分离,也可使用原生前端技术 JavaScript:nodeJs, Vue2, Jquery Java Spring-mvc, Jpa, Mybatis Php ThinkPhp5, Laravel Python Flask, Tornado 所见即所得的在线运行系统 可以在线运行您的系统,直接预览生成效果,避免重复搭建环境、本地启动等繁琐流程,快速调整设计与参数设置,节约宝贵时间。 |