rapid-generator4.06 JAVA代码生成器配置,模板自定义

本文介绍了一款基于Java的代码生成器codeFactory,利用该工具可根据数据库表结构自动生成SSM框架所需的各类代码,包括POJO类、DAO层、Service层及对应的XML配置文件等,极大地提高了开发效率。

codeFactory
介绍:
1.codeFactory: Java代码生成,依赖rapid-generator.4.0.6.jar, 支持自定义模板生成代码, 弱业务下完全解放体力劳动.集成分页插件
2.ssm模板实现:pojo,dao,daoimpl,service,serviceimpl,controller,各mapper.xml 代码自动生成,
3.配置文件自动生(含:spring,springMVC,mybatis,web.xml); 代码完美运行.
使用:
1.配置generator.xml(key):basepackage,namespace,outRoot,jdbc_username,jdbc_password,jdbc_url(默认MySQL库)
2.CodeGenerator类g.generateByTable("tb_admin","tb_city");方法传参(table表名),支持批量传参和单表操作
3.main方法运行CodeGenerator类,在配置的outRoot输出路径找到生成代码,复制到对应项目包下.页面${page.list}获取绑定值, (page是controller绑定的参数, 分页插件写法)


一: 需求
     读取数据库表结构,通过对字段类型、名称等分析得到需要的各种变量,根据模板生成相应的pojo类、xml配置文件、dao和service的接 口和类。

     已实现ssm 代码模板

二: 配置

     新建maven项目,  1 . 配置pom.xml    2 . 新建template文件夹(放公共文件和模板) 

     3 . 新建类CodeGenerator(mai方法中找到模板地址由此生成自定义代码)    4 .  配置generator.xml

      rapid-generator4.06.jar 和3.9版本有区别,3.9的generator.xml  中jdbc.url 是点,4.0.6版本中是jdbc_url  需要注意区别

      完整代码:  https://git.oschina.net/houfeng30920/codeFactory/repository/archive/master

     

pom.xml

<dependencies>
		<!-- 代码生成工具 -->
		<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>

		<!-- freemarker -->
		<dependency>
			<groupId>org.freemarker</groupId>
			<artifactId>freemarker</artifactId>
			<version>2.3.16</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<version>1.2.135</version>
		</dependency>

		<!-- 代码生成器扩展包 -->
		<dependency>
			<groupId>com.googlecode.rapid-framework</groupId>
			<artifactId>rapid-generator-ext</artifactId>
			<version>4.0.6</version>
		</dependency>

		<!-- 代码生成器模板,模板根目录通过 classpath:generator/template/rapid 可以引用 -->
		<dependency>
			<groupId>com.googlecode.rapid-framework</groupId>
			<artifactId>rapid-generator-template</artifactId>
			<version>4.0.6</version>
		</dependency>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

CodeGenerator类

import cn.org.rapid_framework.generator.GeneratorFacade;

public class CodeGenerator {
	
	public static void main(String[] args) throws Exception {
		// 模板地址
		String templatePath = "D:/myeclipse_workspace/codeFactory/src/main/resources/template";
		GeneratorFacade g = new GeneratorFacade();
		g.getGenerator().addTemplateRootDir(templatePath);
		// 删除生成器的输出目录//
		//g.deleteOutRootDir();
		// 通过数据库表生成文件
		g.generateByTable("tb_admin");

		// 自动搜索数据库中的所有表并生成文件,template为模板的根目录
		// g.generateByAllTable();
		// 按table名字删除文件
		// g.deleteByTable("table_name", "template");
	}
}


log4j.properties  放在template文件夹内了

 ### 设置###
log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

generator.xml   放在template文件夹内了

<?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">root</entry>  
    <entry key="jdbc_password">root</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/bangbang?useUnicode=true&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>  

template 文件夹的公共文件: 来自  rapid-generator-template-4.0.6 下的这5个文件.








     

. 生成器模板路径可以引用相关变量 如 ${basepackage}/${className}.java,根据该变量生成输出文件 二. 自动搜索某个目录所有模板文件,无需配置.代码生成器模板可以引用的相关变量 1. g.generateByTable("table_name") 方法可以引用的变量 table : cn.org.rapid_framework.generator.provider.db.table.model.Table 2. g.generateByClass(UserInfo.class) 方法可以引用的变量 clazz : cn.org.rapid_framework.generator.provider.java.model.JavaClass 3. g.generateBySql("select * from user_info where pwd=:pwd") 方法可以引用的变量 sql : cn.org.rapid_framework.generator.provider.db.sql.model.Sql 4.公共变量 env : 系统环境变量 System.getProperties() : 直接引用,没有前缀 generator.properties 文件中的所有属性,直接引用,没有前缀 gg : 模板控制变量, cn.org.rapid_framework.generator.GeneratorControl 四.每个模板有gg变量可以控制自身的自定义配置 (每一个模板都会创建新的gg实例) 如是否生成,是否覆盖目标文件,甚至是生成其它文件 ${gg.setIgnoreOutput(true)}: 如果为true则不生成输出文件 ${gg.generateFile(outputFile,content)} 在模板中生成其它文件 ${gg.getProperty(key,defaultValue)}: 得到proproty,如果没有找到,则返回默认值 ${gg.getInputProperty(key)}: 会弹出一个输入框,提示用户输入值 具体参考: http://code.google.com/p/rapid-framework/wiki/rapid_generator_gg 五.支持生成(gen)及删除操作(del),即生成的代码也可以很方便的删除 六. 自动删除模板扩展名: .ftl,.vm 举例: 如你有一个模板 SqlMap.xml.ftl 将变为 SqlMap.xml 所以你要生成ftl扩展名的文件,应该将文件名从 list.ftl => list.ftl.ftl 七. 模板自动include所有父目录的:macro.include文件,可以存放公共的macro 示例: 如你的模板为 com/project/UserDao.java, 将自动include: com/project/macro.include, com/macro.include, macro.include 八. generator.xml (或者generator.properties)配置文件 1.类似ant可以变量引用,引用环境变量使用${env.JAVA_HOME}, 引用System.getProperties()直接引用 2.自动替换generator.properties中的句号(.)为反斜杠,设置key为key+"_dir"后缀 示例: pkg=com.company => pkg_dir=com/company 九.自动拷贝二进制文件至输出目录 如模板目录下的 zip,rar,doc文件将会自动拷贝至输出目录,不会破坏文件格式 (通过扩展名自动识别) 十. 数据库表配置,用于自定义生成器模板引用的table变量,配置文件必须存放在classpath: generator_config/table/table_name.xml (该文件生成器可以生成,自己再自定义修改)
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值