# CodeGenerator **Repository Path**: jinfang/CodeGenerator ## Basic Information - **Project Name**: CodeGenerator - **Description**: java代理生成器,用于快速的生成java代码,C#代码以及sql语句等各种代码文件。 基于freemarker编写,使用swing作为程序的界面 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 1 - **Created**: 2015-12-01 - **Last Updated**: 2022-10-30 ## Categories & Tags **Categories**: code-generator **Tags**: None ## README # 代码生成器   时间:2015年12月4日18:02:30 V0.1 Author: 左金芳 ## 简介 > 此代码生成器基于freemarker模板引擎进行开发,目前仅支持mysql数据库,采用java语言编写,可自定义模板来生成任何样板代码,极大的减少重复代码的编写时间,通过自定义的html模板,也可用于生成数据库文档,从而从繁杂的数据库文档编写中解脱出来。   ## 功能介绍 ### 批量生成 > 用于批量生成代码,加载数据库以后,选择存放模板的文件夹,配置一下必要的一些参数,系统将自动根据文件夹中的模板来生成所有选择的表的代码。 - 此功能是最近开发的,最为高效快捷。 ![](.img/2018-05-31-17-08-46.png) ### 实时生成 > 选择表以后,在编辑框中编写模板,点击执行以后,在右侧的编辑框中生成需要的代码。 这个功能可以用于验证模板是否正确,也可以用于生成少量的代码。 - 重点是快速,简单。 ![](.img/2018-05-31-17-11-55.png) ### 根据模板生成 >可以载入一个模板到编辑框当中,也可以直接在编辑框中编写模板,模板编辑好以后,选择表,填写必要的参数,就可以进行代码生成。 - 这个功能可用于测试模板编写是否正确。 ### 按表生成 > 这个功能比较特别,其它功能的元数据是来自于表的定义,而这个功能的元数据来自于数据表中的内容,所以要想使用此功能,先要在数据表中插入相应的元数据记录。 - 系统会将表中的所有记录放到一个名为`list`的对象中,在模板中可以使用如下的语法来遍历表中的数据。 ``` <#list list as l> ${l.id} ${l.title} ``` ![](.img/2018-05-31-17-12-48.png) ## 规则定义说明 ### 模板文件命名规则 #### 规则一:以`#`作为间隔 例如:`service#Service.java.ftl` \#前面表示模块名称,#后面表示需要拼接到类名后面的 两个.之间表示生成文件的类型。 使用此种规则命名的模板,每张表都会生成一个文件。 #### 规则二:以`@`作为间隔 例如:[doc@数据库文档.html.ftl](mailto:doc@数据库文档.html.ftl) 使用此规则命名的模板文件,只会生成一个文件,常用于生成数据库文档及其他一些建表语句之类的文档。 @前面的部分表示相对于生成目录的路径,如这个模板将会在生成目录下面生成一个doc文件夹,并生成一个“数据库文档.html”文件。 ### 类名拼接规则 一个java的类名由几个部分拼接而成。 基础的包名+模块名+表名去掉前缀+模板文件名中#后面的部分。 如:基础包名:`com.hello` 模板文件名:`service#Service.java.ftl` 表名:`t_rtm_device` 则最终的类名为: `com.hello+service+Device+Service.java` 即:`com.hello.service.DeviceService.java`   ## 字段说明 ### 数据表(table) 描述数据库中的某一个表 主要包括以下变量: | 字段名 | 类型 | 描述 | | ----------- | ------------ | --------------------- | | packagename | String | 包名,即基础包名 | | name | String | 数据库中的原始表名 | | columnlist | List | 列集合 | | comment | String | 表备注 | | classname | String | 类名(即去掉表名前缀,并将首字母转为大写) | | lowername | String | 去掉前缀的表名 | ### 列(column) 描述数据表中的某一列,主要包括以下变量 | 名称 | 类型 | 说明 | | ---------- | ------ | --------------------------------- | | name | String | 列名(去掉了_,并转为驼峰命名法) | | comment | String | 备注,建议默认在数据库里都写上备注,代码里的所有注释都来源于此备注 | | type | String | Java数据类型 | | length | int | 数据长度 | | bigname | String | 将列名变为首字母大写 | | columnname | String | 数据表中的原始列名 | | isnull | String | 是否为空(YES或者NO) | | columntype | String | 数据库中的数据类型 | | columnkey | String | 是否主键 | | extra | String | 其它 |   ## 使用方法 使用方法非常简单,输入数据库的地址,账号,密码以后,点击连接数据库,连接成功会加载所有的数据库,选择你需要的数据库,点击加载表按钮,软件会将此数据库的所有表都加载进来。 选择你需要生成代码的表,填入必须的参数,点击生成即可。 注:表名前缀可同时填入多个,用于过滤不同的前缀,不同的前缀间用英文逗号,间隔。 ![](.img/2018-05-31-17-13-39.png)