jadetang
V2EX  ›  Java

写了一个代码生成器

  •  
  •   jadetang · Oct 15, 2015 · 6409 views
    This topic created in 4046 days ago, the information mentioned may be changed or developed.

    项目中很多基本代码都是对一个表进行增删改查的,写了个代码生成器,根据建表语句,和写好的模板生产基本的代码,和 maven 的 archetype 差不多,当然比那个功能多一点。

    https://github.com/jadetang/maliang

    我是来求 star 的。 ~(@^_^@)~

    32 replies  •  2015-10-19 15:05:59 +08:00
    adexbn
    adexbn
    Oct 15, 2015 via iPhone
    1
    以前也这么搞过,后来觉得很多 IDE 和框架都可以做这个,就没再继续
    JiaFeiX
    JiaFeiX
    Oct 15, 2015
    2
    赞同,希望未来编程可以更加自动化!
    FrankFang128
    FrankFang128
    Oct 15, 2015
    3
    Rails
    jadetang
    jadetang
    OP
    Oct 15, 2015
    4
    @adexbn 有个 rapid-framework ,我之前的老大弄的,不过估计他不维护了
    jadetang
    jadetang
    OP
    Oct 16, 2015
    5
    @FrankFang128 ror 确实很叼,可惜没有机会用。但是 java 好像就没有这种东西。
    a358003542
    a358003542
    Oct 16, 2015
    6
    不要考虑生成代码,考虑生成数据。
    north521
    north521
    Oct 16, 2015
    7
    mark
    sefemp
    sefemp
    Oct 16, 2015
    8
    Maliang(马良), the name of this project comes from a character of folk tail in China who has a magical brush by which he can draw any thing and turn it to real thing.

    这是英语是楼主自己写的吗?
    是的话,你的英语功底比代码功底强
    ijse
    ijse
    Oct 16, 2015
    9
    感觉思路不对,应该修改框架以不需要这样重复生成代码才对啊。。。

    代码越多,维护成本可能越大
    langzizx39
    langzizx39
    Oct 16, 2015
    10
    @jadetang spring-roo ?听说能简单实现像 ror 那样,不过没实际用过。
    jadetang
    jadetang
    OP
    Oct 16, 2015
    11
    @ijse 这个项目的目的是刚刚开始项目的时候,根据你的表结构生成一些基本的代码,例如 model , dao , service , controller 。并且根据公司常用的项目框架生成代码结构和目录。你不同的表,对应的 model 肯定不一样吧,这不存在重复代码的问题啊。在 example 里面有个 demo ,你可以试一下就知道是干什么的了。
    jadetang
    jadetang
    OP
    Oct 16, 2015
    12
    @a358003542 如果你拿到表结构,肯定是可以生成 insert 语句造数据的,但是数据一般都是和业务逻辑相关的,这样的话,没有办法生成有用的数据。
    ijse
    ijse
    Oct 16, 2015
    13
    @jadetang 我之前做 java 的时候也用过这种生成器,自动生成一些 model 等代码。 我只是觉得这种重复的劳动应该由框架去解决。
    jadetang
    jadetang
    OP
    Oct 16, 2015
    14
    @sefemp 你这是夸我还是贬我。
    jadetang
    jadetang
    OP
    Oct 16, 2015
    15
    @langzizx39 看了一些,那个比我写的强多了,数据实体可以指定 one-to-many ,如果早知道那个我就不写自己的拉。不过不知道能不能指定自己的模板,因为其实每个公司都不一样的,比如我们公司一直用 spirng3.0.5 。但是 spring-roo 自带的模板,肯定是 4.0 以上的版本。
    jadetang
    jadetang
    OP
    Oct 16, 2015
    16
    @ijse 不知道你说的框架是什么?
    ooTwToo
    ooTwToo
    Oct 16, 2015
    17
    要是能根据数据库存在的表生成就更好了,就像 Mybatis 的 generator 插件一样.
    jadetang
    jadetang
    OP
    Oct 16, 2015
    18
    @ooTwToo 其实是可以做到的,你填个数据库连接,然从数据库把表的表结构给读出来,我其实在公司搭了一个网页,让他们自己输入表结构。
    ooTwToo
    ooTwToo
    Oct 16, 2015
    19
    @jadetang 0.0 great!
    cyberdak
    cyberdak
    Oct 16, 2015
    20
    代码生成器就是每个码农都会经历的一个轮子
    CRUD 工作太多的话,基本都会想着写一个代码生成器
    jc4myself
    jc4myself
    Oct 16, 2015 via iPhone
    21
    eclipse 有反向工具,可选择生成哪些 schema ,支持 schema 重命名; mybatis 的 mybatis-generator ,可配置生成 schema ,文件生成路径,数据类型映射,再在这基础上开发下就更好用了;这种工具去扫系统自带的表获取表名列名更好,不用 ddl ;既然是 java 希望提供可运行 java 就完美了
    jadetang
    jadetang
    OP
    Oct 16, 2015
    22
    @jc4myself mybatis-generator 没用过,但是我之前公司的数据库访问层都是 jdbc 的,所以用不上。
    slixurd
    slixurd
    Oct 16, 2015
    23
    然而我选择了不用写简单 CRUD 的 Spring-data 。
    复杂 SQL 再用注解形式写上去就好了。
    不过还是需要自己写 Bean 。
    jadetang
    jadetang
    OP
    Oct 16, 2015
    24
    @slixurd 关键是我们公司都不用新的东西,%>_<%
    a358003542
    a358003542
    Oct 16, 2015
    25
    我还是那句话,不要考虑生成代码,生成数据。 字符串的组合和 parse 等你真正学会了,再来谈论代码生成和自造编程语言的事啊。不要好高骛远、
    Iteye
    Iteye
    Oct 18, 2015
    26
    已经 pull 下来了 请楼主把 todo 里的任务写的清楚点 我没事的时候玩玩
    jadetang
    jadetang
    OP
    Oct 19, 2015
    27
    update 了。不过我其实想不到有什么能改进的了,不是因为这个东西好。是因为
    1. 很简单。
    2. 现在没什么人用,自然没有需求。

    我写的这个东西,其实是标准 MVC 的结构,其中的 V 就是指的模板, M 指的是从建表语句拿到数据信息, C 很简单,就是做一些复制目录,和调用 velocity api 生成文件的操作。

    这么说来,其实最繁琐,但是价值最大的也就是 V ,即更加符合平时开发需要的模板,不过这样的模板每个公司都不一样,并没有什么太多能做的事情。
    jadetang
    jadetang
    OP
    Oct 19, 2015
    28
    @Iteye update 了,看看我上一条回复。
    kzzhr
    kzzhr
    Oct 19, 2015 via iPhone
    29
    画出 uml ,然后自动生成模型,基本方法集,建好数据库。。等楼主试试
    jadetang
    jadetang
    OP
    Oct 19, 2015
    30
    @kzzhr 我从来没有碰到过用 uml 的公司。
    jc4myself
    jc4myself
    Oct 19, 2015
    31
    @jadetang mybatis-generator 只是一个工具而已嘛,也可以用来生成 bean 的,还可以配置包路径。挺好用的
    jadetang
    jadetang
    OP
    Oct 19, 2015
    32
    @jc4myself 我这个也可以,还不用连数据库。关键是,你有不同的模板,可以生成任意的文本文件的。试用一下吧。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3299 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 10:08 · PVG 18:08 · LAX 02:08 · JFK 05:08
    ♥ Do have faith in what you're doing.