自己写的代码生成器,保证好用!
优点:
1,语法简单,即freeMarker语法。
2,配置简单,maven命令生成,操作简单
3,可扩展,自定义模板
缺点:
1.刚写的,难免有bug,不过发现会及时改。
2.单线程创建文件,后面考虑多线程,不过影响不大,都很快创建。
使用步骤:
第一步:创建文件夹
项目中增加mbg/templates等,如下图所示:
提示:文件夹的位置可以自己适情况调整位置,只要generatorConfig.xml对应的配置路径对即可。
其中
1,tramp-generator-config_1_0.dtd文件是对generatorConfig.xml配置文件的规范约束。
2,*.ftl文件就是我们想生成的模板文件,使用了freeMarker,所以只要了解freeMarker便可以随意自定义模板。插件内置了属性,可直接使用,具体属性下面说。
3,generatorConfig.xml是插件的核心配置文件,具体描述看下面代码:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration SYSTEM "dtd\tramp-generator-config_1_0.dtd"> <generatorConfiguration> <!--mysql数据库相关配置,目前只支持mysql--> <dataSource url="jdbc:mysql://127.0.0.1:3306/mbg" user="root" password="123456" driverClassName="com.mysql.jdbc.Driver"/> <!-- 数据库字段类型与java类型对应关系,主要用于生成实体类时使用,可根据项目情况配置对应javaType--> <types> <type jdbcType="TINYINT" javaType="Integer"></type> <type jdbcType="INT" javaType="Integer"></type> <type jdbcType="INTEGER" javaType="Integer"></type> <type jdbcType="SMALLINT" javaType="Integer"></type> <type jdbcType="NUMERIC" javaType="Integer"></type> <type jdbcType="DECIMAL" javaType="BigDECIMAL"></type> <type jdbcType="BIGINT" javaType="Long"></type> <type jdbcType="FLOAT" javaType="Float"></type> <type jdbcType="DOUBLE" javaType="Double"></type> <type jdbcType="CHAR" javaType="String"></type> <type jdbcType="VARCHAR" javaType="String"></type> <type jdbcType="TEXT" javaType="String"></type> <type jdbcType="DATE" javaType="Date"></type> <type jdbcType="DATETIME" javaType="Date"></type> <type jdbcType="TIME" javaType="Timestamp"></type> <type jdbcType="TIMESTAMP" javaType="Timestamp"></type> </types> <!-- 模板集合,path为模板目录路径--> <templates path="mbg/templates"> <!--模板,name:模板名称,tootPath:根目录(如:resources,java,test等),path:模板生成的文件所要存放的路径--> <template name="BaseMapper.xml.ftl" rootPath="resources" path="mapper.base"></template> <template name="Mapper.xml.ftl" rootPath="resources" path="mapper"></template> <template name="plh.java.ftl" rootPath="java" path="com.tramp.basic.entity"></template> <template name="Service.java.ftl" rootPath="java" path="com.tramp.basic.service"></template> <template name="Dao.java.ftl" rootPath="java" path="com.tramp.basic.dao"></template> <template name="BaseDao.java.ftl" rootPath="java" path="com.tramp.basic.dao.Base"></template> </templates> <!--数据库表集合--> <tables> <!--数据库表,name:数据库中的表名,prefix:表前缀,overwrite:是否覆盖代码,默认false--> <table name="mbg_test" prefix="it_" overwrite="true"/> </tables> </generatorConfiguration>
二,pom.xml增加插件配置
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.5.0</version> <executions> <execution> <id>default-cli</id> <goals> <goal>java</goal> </goals> </execution> </executions> <configuration> <includePluginDependencies>true</includePluginDependencies> <cleanupDaemonThreads>false</cleanupDaemonThreads> <arguments> <argument>${basedir}/mbg/generatorConfig.xml</argument> </arguments> <mainClass>com.tramp.generator.Runner</mainClass> </configuration> <dependencies> <dependency> <groupId>tramp.generator</groupId> <artifactId>core</artifactId> <version>1.0-SNAPSHOT</version> <type>jar</type> </dependency> </dependencies> </plugin>
三,生成文件
执行maven命令:exec:java即可
四:内置属性
大家可以根据自己项目情况配置对应模板,几分钟就可以配置好啦,不懂freeMarker的花几分钟时间看看,基本够用了。下面贴出插件内置的数据,可以直接拿来用。
以user_addr数据库表为例:有link_mobile属性,类型VARCHAR,注释为:联系电话
属性名 | 属性值 | |
className | UserAddr | |
variableName | userAddr | |
tableName | user_addr | |
table | 属性名 | 属性值 | name | user_addr | columnList | 属性名 | 属性值 | name | link_mobile | className | LinkMobile | variableName | linkMobile | type | VARCHAR | javaType | String(配置文件中配置的) | | | |
下面贴出模板代码片段供参考:
<resultMap id="baseResultMap" type="com.tramp.basic.entity.${className}"> <id column="id" jdbcType="VARCHAR" property="id" /> <#list table.columnList as field> <#if field.name != 'id'> <result column="${field.name}" property="${field.variableName}" jdbcType="${(field.type=='DATETIME')?string('TIMESTAMP',field.type)}"/> </#if> </#list> </resultMap> <sql id="baseColumnList"> <#list table.columnList as field>${field.name}<#if field_has_next>,</#if></#list> </sql> <select id="get" parameterType="java.lang.String" resultMap="baseResultMap"> select <include refid="baseColumnList"/> from ${table.name} where id = ${'#'}{id,jdbcType=VARCHAR} </select> <delete id="delete" parameterType="java.util.Collection"> delete from ${table.name} where 1=1 and id in <foreach close=")" collection="list" index="index" item="item" open="(" separator=","> ${'#'}{item,jdbcType=VARCHAR} </foreach> </delete>
最后,由于代码还不够好看(刚这周写的,比较粗糙),先不放代码了,等再重新整理放出。需要使用的,可以加qq群交流,下载,QQ:461964997