V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
jadetang
V2EX  ›  Java

写了一个代码生成器

  •  
  •   jadetang · Oct 15, 2015 · 5877 views
    This topic created in 3846 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
        1
    adexbn  
       Oct 15, 2015 via iPhone
    以前也这么搞过,后来觉得很多 IDE 和框架都可以做这个,就没再继续
    JiaFeiX
        2
    JiaFeiX  
       Oct 15, 2015
    赞同,希望未来编程可以更加自动化!
    FrankFang128
        3
    FrankFang128  
       Oct 15, 2015
    Rails
    jadetang
        4
    jadetang  
    OP
       Oct 15, 2015
    @adexbn 有个 rapid-framework ,我之前的老大弄的,不过估计他不维护了
    jadetang
        5
    jadetang  
    OP
       Oct 16, 2015
    @FrankFang128 ror 确实很叼,可惜没有机会用。但是 java 好像就没有这种东西。
    a358003542
        6
    a358003542  
       Oct 16, 2015
    不要考虑生成代码,考虑生成数据。
    north521
        7
    north521  
       Oct 16, 2015
    mark
    sefemp
        8
    sefemp  
       Oct 16, 2015
    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
        9
    ijse  
       Oct 16, 2015
    感觉思路不对,应该修改框架以不需要这样重复生成代码才对啊。。。

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

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

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