`
jy03100000
  • 浏览: 34282 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用Rapid generator 4.0.6 自动生成代码

 
阅读更多


    最近在搭建一个SSH的项目,本着不重复发明轮子的原则,当我发现3层(MVC)架构中基本都是些大同小异的代码时,我就考虑是否可以用代码生成器来帮我自动生成这些代码,网上比较了一下多个代码生成框架,最后决定使用rapid-generator。


    之所以选择rapid-generator是因为这个工具可以独立运行,如果想省心的话,直接下载3.9.2独立运行版(这是2010年放出的最后一个版本,之后这个工具添加了maven支持,其后如何发展我也不甚明了)。下载地址:http://code.google.com/p/rapid-generator/downloads/list。下载下来的包如下图,照着里面的运行说明和生成器特性简要说明,很快就可以测试成功(注意需要配置java环境变量),进而就可以根据自己需求进行配置,自动生成代码了,基本就是3个步骤,1. 修改generator.xml文件里的数据库配置;2. 按需修改template文件夹里的内容;3. 运行rapid-gen.bat



 

      在3.9.2 的template文件夹中,该工具提供了struts2,springmvc,ibatis, hibernate的相应模板,可分别生成model,dao,manager和controller的代码, 包括hibernate的hbm.xml,ibatis的mapper.xml,jsp文件都可以生成。以下是template文件夹中的具体内容,这里值得说明的是,这个文件夹中,除了4个include文件是不能删除的,其他文件都可以根据个人需要进行定制(增删改),包括里面具体的模板文件,自己按需修改就能自动生成需要的代码了。



 

    关于独立运行版的说明就到此为止。到此,我的目的也算基本达成,但是这样开发感觉不顺手,我相信肯定 有朋友和我有同样的感觉,就是希望能在IDE里完成所有的编程操作,而不是额外使用一个工具来生成代码。


    对此,如果你不是和我一样的强迫症一定想用最新版的rapid-generator 4.0.6的话,百度上直接搜索关键字rapid-generator就会有一篇上善若水的博客简单介绍了如何用代码使用rapid-generator,文章中未标明版本,但应该使用3.9的jar包即可完成配置。http://www.cnblogs.com/dyfzwj/archive/2012/08/17/2643914.html。 而如果你非要使用4.0.6的话,下面的内容希望对你有所帮助。


    我进一步调试了这个工具,最后把它变成了一个可以使用的java application,或者直接集成在自己的目标项目里。以下我就将配置过程共享出来。这里顺便提一下,我使用的IDE是NetBeans,如果使用的是Eclipse的话,似乎有1个插件本身就可以做代码自动生成:slave4j(http://code.google.com/p/slave4j/)。还有另一个代码自动生成工具JunJava,生成的项目可以直接导入Eclipse。有兴趣的朋友可以去尝试一下。当然,我以下的配置方法是通用的,无论是用NetBeans还是Eclipse都很容易配置。 PS:下面说明中,括号中的内容是我遇到的一些问题及解决过程,不在意的话可以不看)


   第一步,新建一个maven项目,上文提到过,rapid-generator在4.0之后提供maven支持,我在maven仓库中找到的最新版本是4.0.6。因此第一步是修改pom文件,将rapid-generator的jar包引入:

    

        <dependency>
            <groupId>com.googlecode.rapid-framework</groupId>
            <artifactId>rapid-generator</artifactId>
            <version>4.0.6</version>
        </dependency>

 
   第二步,根据你使用的数据库(需要扫描数据库表,来生成代码),加入驱动包引入,如mysql
                  

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.34</version>
        </dependency>

 
(前2步如果不是使用maven的话,就自己下载jar包引入即可)

第三步,在classes的根目录创建generator.xml文件
   复制3.9.2的xml文件,修改里面的所有key字段的.为_, 如jdbc.url改为jdbc_url.最终修改了的配置文件如下:

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <comment>
        代码生成器配置文件: 
        1.会为所有的property生成property_dir属性,如pkg=com.company => pkg_dir=com/company
        2.可以引用环境变量: ${env.JAVA_HOME} or System.properties: ${user.home},property之间也可以相互引用
    </comment>
	
    <entry key="basepackage">com.minarea</entry>
	
    <!-- jsp namespace: web/${namespace}/${className}/list.jsp -->
    <entry key="namespace">pages</entry>
	
    <entry key="outRoot">.\generator-output</entry>

    <!-- 需要移除的表名前缀,使用逗号进行分隔多个前缀,示例值: t_,v_ -->
    <entry key="tableRemovePrefixes"></entry>
	
    <entry key="jdbc_username">ace-uk</entry>
    <entry key="jdbc_password">tqye2000</entry>
		
    <!-- oracle需要指定jdbc.schema,其它数据库忽略此项配置  -->
    <entry key="jdbc_schema"></entry>
    <entry key="jdbc_catalog"></entry>
	
    <!-- 数据库类型映射  -->
    <entry key="java_typemapping.java.sql.Timestamp">java.util.Date</entry>
    <entry key="java_typemapping.java.sql.Date">java.util.Date</entry>
    <entry key="java_typemapping.java.sql.Time">java.util.Date</entry>	
    <entry key="java_typemapping.java.lang.Byte">Integer</entry>
    <entry key="java_typemapping.java.lang.Short">Integer</entry>
    <entry key="java_typemapping.java.math.BigDecimal">Long</entry>

    <!-- H2 -->
    <!-- <entry key="jdbc.url">jdbc:h2:tcp://localhost/test</entry>
    <entry key="jdbc.driver">org.h2.Driver</entry>
    -->
		
    <entry key="jdbc_url">jdbc:mysql://localhost:3306/minarea?useUnicode=true&amp;characterEncoding=UTF-8</entry>
    <entry key="jdbc_driver">com.mysql.jdbc.Driver</entry>

    <!-- Oracle 	jdbc:oracle:oci:@tnsname_devdb
    <entry key="jdbc.url">jdbc:oracle:thin:@192.168.0.177:1521:[sid]</entry>
    <entry key="jdbc.driver">oracle.jdbc.driver.OracleDriver</entry>
    -->
	
    <!-- SQLServer2000 
    <entry key="jdbc.url">jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=[database]</entry>
    <entry key="jdbc.driver">com.microsoft.jdbc.sqlserver.SQLServerDriver</entry>
    -->
	
    <!-- SQLServer2005 
    <entry key="jdbc.url">jdbc:sqlserver://192.168.0.98:1433;DatabaseName=[database]</entry>
    <entry key="jdbc.driver">com.microsoft.sqlserver.jdbc.SQLServerDriver</entry>
    -->

    <!-- JTDs for SQLServer 
    <entry key="jdbc.url">jdbc:jtds:sqlserver://192.168.0.102:1433/[database];tds=8.0;lastupdatecount=true</entry>
    <entry key="jdbc.driver">net.sourceforge.jtds.jdbc.Driver</entry>
    -->

    <!-- PostgreSql
   <entry key="jdbc.url">jdbc:postgresql://localhost/[database]</entry>
   <entry key="jdbc.driver">org.postgresql.Driver</entry>
    -->
	
    <!-- Sybase
   <entry key="jdbc.url">jdbc:sybase:Tds:localhost:5007/[database]</entry>
   <entry key="jdbc.driver">com.sybase.jdbc.SybDriver</entry>
    -->
	
    <!-- DB2 
    <entry key="jdbc.url">jdbc:db2://localhost:5000/[database]</entry>
    <entry key="jdbc.driver">com.ibm.db2.jdbc.app.DB2Driver</entry>
    -->
	
    <!-- HsqlDB 
    <entry key="jdbc.url">jdbc:hsqldb:mem:generatorDB</entry>
    <entry key="jdbc.driver">org.hsqldb.jdbcDriver</entry>
    -->
	
    <!-- Derby 
    <entry key="jdbc.url">jdbc:derby://localhost/databaseName</entry>
    <entry key="jdbc.driver">org.apache.derby.jdbc.ClientDriver</entry>	
    -->

</properties>

 
(我不得不在这里吐槽,之所以使用3.9.2的xml文件是因为我没有在任何地方找到4.0版本的示例文件,并且没有找到任何相关的文档说明,更关键的是4.0之后的版本跟3.9配置上还还不完全一致,这给后来的配置造成不少麻烦。不修改3.9.2的这个文件的话,运行时,会报一个错误说required property is blank by key=jdbc_url,查看3.9.3的这个文件发现,里面的key是jdbc.url,遂猜测4.0是将所有key中的点全部换成了下划线,我就全都这么改了一遍,然后就程序就跑过去了,之后我查了源码,确实是这样)

第四步,创建code生成类CodeGenerator,就是一个main方法,

public static void main(String[] args) throws Exception {
        String templatePath = &quot;C:\\Users\\Administrator\\Desktop\\rapid-generator-3.9.2.20100720\\template&quot;;
        GeneratorFacade g = new GeneratorFacade();
        g.getGenerator().addTemplateRootDir(templatePath);
        //删除生成器的输出目录//
        g.deleteOutRootDir();
        //通过数据库表生成文件
        g.generateByTable(&quot;user&quot;,&quot;blog&quot;);
       
//        自动搜索数据库中的所有表并生成文件,template为模板的根目录
//        g.generateByAllTable();
//        按table名字删除文件
//        g.deleteByTable(&quot;table_name&quot;, &quot;template&quot;);
}

 
(这个代码的原始版本是从网上得来的,但是网上的那套代码大概是4.0之前的版本,template的目录是在调用generate方法的时候指定的,4.0之后的版本template目录不是这样指定的了,而是使用g.getGenerator().addTemplateRootDir(templatePath);,这一步卡了蛮久,查源码查了半天才找到是这样指定的)

第五步,template文件夹的处理
到maven仓库可以找到最新的template压缩包,其是以jar包的形式放在maven仓库里了,可以直接下载下来,下载链接http://maven.outofmemory.cn/com.googlecode.rapid-framework/rapid-generator-template/4.0.6/。  在任意路径新建template文件夹,将jar包目录rapid-generator-template-4.0.6.jar\generator\template\rapid\share\basic下的5个include文件复制到template文件夹下,挑选jar包中你需要的其他template文件放到template路径文件夹中。将template的路径指定到CodeGenerator中,运行该类,code就会自动生成了。

其他事项:
将生成的代码复制到你的真实项目路径中后,会有很多引用缺失,需要手动去解决这些引用问题,常见的引用问题有:
1. Spring相关jar包的引用
2. Hibernate及hibernate验证jar包的引用
3. Rapid-core的引用
4. Commons-langs的引用错误,生成器默认生成的代码是引用的commons-langs version1的包,而目前我们基本都用到3以上的版本,所以一般需要修改模板文件
5. javacommon.base/util的引用,我个人没有搞清楚到底是什么,网上有人说rapid-framework里有这个包,但我用4.0的版本中并没有,我个人认为这个应该是一个编程的规范写法,将一些基础类和util类放在这2个包里,不需要这2个引用的话可以从java_imports.include,这个文件中删除

以上就是我整个配置过程,其与所使用的编译器基本没有啥关系,配置过程中遇到的问题也都有提到,希望给各位有个参考。目前在写的项目模板文件还未完成,之后成熟了,我会将自己的模板文件放出。


后记:关于代码自动生成,针对generator这个工具而言,似乎10年后就再无发展,但我也没有找到更好的更流行的工具,对此比较疑惑。对于现在大部分项目都只涉及到增删改查,业务逻辑并不复杂的现状来说,这种基础类自动生成对开发效率的提升还是很有帮助的。不明白对此为什么就再无发展了。

 

  • 大小: 121.5 KB
  • 大小: 102.3 KB
  • 大小: 10.7 KB
分享到:
评论

相关推荐

    最快速的java代码生成器 rapid-generator

    Rapid-Generator的核心功能在于自动生成符合特定模板的Java源代码。它支持多种代码生成模式,包括实体类(Entity)、数据访问对象(DAO)、服务接口(Service Interface)和服务实现(Service Implementation)、...

    generator 自动生成代码工具

    `generator 自动生成代码工具`是一种高效开发辅助工具,主要用于节省开发者在编写重复性代码上的时间,提升开发效率。这种工具能够根据选定的数据库和表自动生成相应的代码,包括但不限于实体类、DAO接口、Mapper ...

    mybatis-generator插件 自动生成代码和注解

    MyBatis Generator(MBG...总之,MyBatis Generator是MyBatis框架的一个强大辅助工具,通过它可以自动化地生成数据库操作相关的代码和注解,极大地提高了开发效率。正确理解和使用MBG,能够使Java开发更加高效、规范。

    mybatis-generator自动生成代码[增加Service的生成]

    标题 "mybatis-generator自动生成代码[增加Service的生成]" 指的是MyBatis Generator(MBG)这一工具,它能够根据数据库表结构自动产生Java持久层代码,大大减轻了开发人员的手动编码工作。在描述中提到"增加Service...

    rapid-generator-v3.9 代码生成器独立版

    总的来说,Rapid-Generator v3.9 是Java开发者的得力助手,通过自动化代码生成,减少了手动编写重复代码的时间,提升了开发速度和代码质量。无论你是初学者还是经验丰富的开发者,它都能帮助你在项目开发中更加...

    mybatis-generator eclipse自动生成代码插件离线安装包

    MyBatis Generator(MBG)是一款强大的自动化代码生成工具,专为简化MyBatis框架的使用而设计。它能够根据数据库表自动生成Java实体类、Mapper接口和XML配置文件,大大提高了开发效率。Eclipse是广受欢迎的Java集成...

    generator代码自动生成工具

    总之,"generator代码自动生成工具"是提升SSM项目开发效率的重要辅助工具,通过合理的配置和使用,可以帮助开发者从繁琐的基础代码编写中解脱出来,更好地专注于核心业务的实现,提高软件开发的生产力。在实际开发...

    mybatis-generator 自动生成代码

    通过mybatis-generator-...连接数据库,通过配置文件自动生成对应表的mybatis的配置文件,a.bat是通过cmd命令运行可执行jar mybatis-generator-core-1.3.1.jar ,通过 generatorConfig.xml的配置生成代码到相应位置.

    mybatisGenerator代码自动生成

    MyBatis Generator(MBG)是一款强大的代码生成工具,它能够根据数据库表自动创建Java实体类、Mapper接口和XML配置文件,极大地提高了开发效率。在本文中,我们将深入探讨MyBatis Generator的功能、使用方法以及如何...

    使用MyBatis Generator自动生成MyBatis代码.docx

    使用 MyBatis Generator 自动生成 MyBatis 代码 MyBatis Generator 是一个流行的开源工具,用于根据数据库表结构自动生成 MyBatis 的映射文件、实体类、DAO 层和 Service 层等代码。下面是使用 MyBatis Generator ...

    Generator 代码自动生成工具

    在项目开发过程中,一般会用到数据库开发...Generator 代码自动生成工具,是在cy-security项目中,抽取cy-gen插件,在此基础上完成改造。如需了解cy-security更多信息,可访问: https://gitee.com/leiyuxi/cy-security

    mybatis-generator 代码自动生成工具

    MyBatis Generator(MBG)是一款强大的代码生成工具,它能够极大地提高开发效率,通过自动创建MyBatis框架所需的Mapper接口、XML配置文件以及Java实体类,减轻了开发者的手动编码工作。MBG的主要功能是根据数据库表...

    eclipse利用mybaits generator自动生成代码工具

    MyBatis Generator(MBG)是一款强大的自动化代码生成工具,尤其在使用MyBatis作为持久层框架时,它能够极大地提高开发效率。本教程将详细讲解如何在Eclipse环境中利用MBG来自动生成代码。 首先,我们需要理解MBG的...

    JAVA-mybatis-generator代码自动生成工具

    **JAVA - MyBatis Generator 代码自动生成工具** MyBatis Generator(MBG)是一款强大的Java工具,能够根据数据库表结构自动产生Model类、Mapper接口和XML映射文件,极大地提高了开发效率。这款工具适用于Java...

    rapid-generator代码生成器源码

    rapid-generator代码生成器源码

    基于Java的renren-generator自动生成代码设计源码

    该项目是一款基于Java的代码生成工具——renren-generator,旨在自动生成代码。该工具集成了Java、JavaScript、CSS和HTML等多种编程语言,共包含99个文件,包括31个Java源文件、15个JavaScript文件、11个CSS文件、11...

    MyBatis Generator 自动生成代码完整包

    MyBatis Generator(MBG)是一款强大的工具,用于自动生成MyBatis框架的SQL映射文件、Java模型类以及DAO接口。它极大地提高了开发效率,减少了手动编写这些基础代码的工作量,使开发者能够更专注于业务逻辑的实现。...

    mybatis-generator自动生成代码

    MyBatis Generator(MBG)是一款强大的工具,用于自动生成MyBatis框架中的代码,包括实体类、DAO接口以及XML映射文件。它通过解析数据库表结构,自动创建与数据库表对应的Java对象和数据访问层代码,从而极大地提高...

    mybatis-generator自动生成代码(含中文注释)

    mybatis-generator自动生成代码(含中文注释) 1、打开generatorConfig.xml 2、修改数据库链接地址账号密码 将connectionURL修改为你所需生成的对象的数据库地址,修改用户名userId和密码password 3、修改生成Model类...

Global site tag (gtag.js) - Google Analytics