Skip to content
No description, website, or topics provided.
Java FreeMarker
Branch: master
Clone or download
Latest commit 2ed204c Aug 16, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src add log print on generator Aug 16, 2019
.gitignore rebuild simple code generator use freemarkter Apr 17, 2019
README.md add packageName param in maven plugin Aug 16, 2019
pom.xml change maven version to SNAPSHOT Aug 16, 2019

README.md

simple-codegen 代码生成器

基于 freemarker的代码生成器, 主要针对后端管理平台一些通用的类生成。原理是将已编写好的模板,通过传入参数, 利用freemarker渲染成文件,然后生成到指定目录。

插件配置

  1. pom.xml 添加插件, 配置好生成参数, 然后执行 mvn simple-codegen:codegen
<plugin>
    <groupId>com.diamondfsd</groupId>
    <artifactId>simple-codegen</artifactId>
    <version>RELEASE</version>
    <configuration>
        <!--模板路径-->
        <templatePath>src/main/resources/code-template</templatePath>
        <!--目标路径-->
        <sourcePath>src/main/java/</sourcePath>
        <!--pojo参数,传入 表名/Model名称,主键类型-->
        <pojos>
            <pojo>table_name,Integer</pojo>
            <pojo>ModelName,Long</pojo>
        </pojos>
        <!--自定义参数-->
        <params>
            <youSelfKey>youSelfValue</youSelfKey>
            <youSelfKey2>youSelfValue2</youSelfKey2>
        </params>
    </configuration>
</plugin>

插件配置说明

  • templatePath: 模板文件夹路径,默认src/main/resources/code-template
  • sourcePath: 生成源码输出基础目录, 默认 src/main/java/
  • pojos: 预置的参数,接受一个Model名称和Java类型作为参数,每一个pojo会生成一遍所有模板内的内容
<pojos>
    <pojo>table_name,Integer</pojo>
    <pojo>ModelName,Long</pojo>
</pojos>
  • params: 自定义参数,可以加一些自定义参数在模板内使用
<params>
    <selfKey>xxx</selfKey>
    <selfKey2>xx2</selfKey>
</params>
${params.selfKey}
${params.selfKey2}

模板范例

模板以 !# 开头,后面是生成好文件的目标路径和名称,会自动加上 sourcePath 配置, 因为是ftl模板,可以用freemark语法,大部分情况情况下,我们只需要用到${xxx}来替换字符串

模板内参数在插件的 pojos内配置,可以配置多条,多条会生成多次

默认可用参数如下:

  1. name: 模型类名称, table_name -> TableName, ModelName -> ModelName
  2. nameCamelCase: 模型名称驼峰, table_name -> tableName, ModelName -> modelName
  3. nameSplit: 模型名称使用-分割, table_name -> table-name, ModelName -> model-name
  4. primaryKeyType: 主键类型, Any -> Any, any -> any
  5. packageName: 包名
  6. packagePath: 包路径(如果指定了包名会自动生成包路径,该参数可以在模板头的路径位置使用)
!# ${packagePath}/${name}.java
package ${packageName}.model;

import ${packageName}.jooq.tables.pojos.${name}Pojo;

public class ${name} extends ${name}Pojo {
}
You can’t perform that action at this time.