1.简介
rapid-generator是一个由JAVA编写的,通过数据库元数据和模板框架freemarker自动生成代码的一个开源框架。
2.实现
pom.xml
<dependency> <groupId>com.googlecode.rapid-framework</groupId> <artifactId>rapid-generator</artifactId> <version>4.0.6</version> </dependency>
generator.xml
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <!-- 系统配置,详见GeneratorConstants.java --> <!-- 自动生成代码的输出路径 --> <entry key="outRoot">F:/CodeGenerator/codes</entry> <entry key="jdbc_driver">com.mysql.jdbc.Driver</entry> <entry key="jdbc_url">XXX</entry> <entry key="jdbc_username">root</entry> <entry key="jdbc_password">123456</entry> <!-- 需要移除的表名前缀,使用, \t\n\r\f进行分隔多个前缀,示例值: t_,v_ --> <entry key="tableRemovePrefixes">t_</entry> <!-- 列类型和JavaType的对应关系 --> <!-- DatabaseDataTypesUtils --> <!-- 自定义列类型和JavaType的对应关系 --> <!-- Column.initOtherProperties --> <entry key="java_typemapping.java.lang.Byte">byte</entry> <entry key="java_typemapping.java.lang.Short">short</entry> <entry key="java_typemapping.java.lang.Integer">int</entry> <entry key="java_typemapping.java.lang.Long">long</entry> <entry key="java_typemapping.java.lang.Float">float</entry> <entry key="java_typemapping.java.lang.Double">double</entry> <entry key="java_typemapping.java.lang.Boolean">boolean</entry> <entry key="java_typemapping.java.lang.String">String</entry> <entry key="java_typemapping.java.sql.Date">Date</entry> <entry key="java_typemapping.java.sql.Time">Date</entry> <entry key="java_typemapping.java.sql.Timestamp">Date</entry> <!-- 自定义变量 --> <!-- 可添加自定义的变量,在模板文件中引用 --> <entry key="basepackage">XXX</entry> </properties>
SimpleTest.java
package com.siyuan.study.codegenerator;
import cn.org.rapid_framework.generator.GeneratorFacade;
public class SimpleTest {
public static void main(String[] args) throws Exception {
GeneratorFacade g = new GeneratorFacade();
g.deleteOutRootDir();
g.getGenerator().setTemplateRootDir("F:/CodeGenerator/template");
g.generateByTable("t_activity");
}
}
${className}.java
<#assign className = table.className>
<#assign classNameLower = className?uncap_first>
package ${basepackage}.model;
<#list table.columns as column>
<#if column.javaType == "Date">
import java.util.Date;
<#break>
</#if>
</#list>
public class ${className} {
<#list table.columns as column>
private ${column.javaType} ${column.columnName?uncap_first};
</#list>
public ${className}(){
}
<#list table.columns as column>
public ${column.javaType} get${column.columnName?cap_first}() {
return this.${column.columnName?uncap_first};
}
public void set${column.columnName?cap_first}(${column.javaType} ${column.columnName?uncap_first}) {
this.${column.columnName?uncap_first} = ${column.columnName?uncap_first};
}
</#list>
}