Codgen - 代码生成器


Apache
跨平台
Java

软件简介

Codgen是一个基于数据库元数据模型,使用freemarker模板引擎来构建输出的代码生成器。freemarker的数据模型结构通常来说都是一个Map树状结构模型,codgen也不例外,它的数据模型这棵树的根节点一般包含一个TableModel(表数据模型)对象。TableModel顾名思义就是由一张数据库表的元数据信息组成的一个数据模型,有了这个数据模型,再加上一套使用freemarker编写的多层架构模板,就可以生成一套基于这个表的多层架构代码文件。

总的来说,codgen具有以下主要功能及特性:

  1. 采用freemarker的构建公式:数据模型+模板=输出,默认使用freeMarker模板引擎来生成代码,但可以通过Builder接口实现其他构建方式。
  2. 核心数据模型TableModel基于JDBC实现表元数据及其所有字段列的相关元数据信息的封装。
  3. 数据模型TableModel基于JDBC实现,可以取得大部分元数据信息,个别信息的取得与具体数据库方言有关,可以通过扩展DbProvider来实现。
  4. 通过实现接口ColumnHandler,可以完成JDBC数据类型到各种编程语言的类型转换操作及更多复杂的操作,如处理Oracle的大写列名以增强列名称的可读性。
  5. 通过配置可以动态增加或重定义数据模型,并可以被后面的数据模型通过模板语言引用或组装。
  6. 构建时指定的模板可以是一段文本字符串,也可以是一个文件路径,并且它们的内容里都可以引用已定义的数据模型。
  7. 构建时指定的输出类型可以是文本,也可以是文件,指定的文件输出路径也可以引用数据模型变量。
  8. 项目配置引入继承机制,这样就可以重用在父类配置中已定义的数据模型及其他配置信息。
  9. 项目配置信息可以分开多个配置文件存放,codgen一次性加载并缓存起来以加速之后的访问。

下图为基于codgen开发的一个代码生成实践示范项目mycodgen