网站首页 > 技术文章 正文
Codgen是什么?
Codgen是一个基于数据库元数据模型,使用freemarker模板引擎来构建输出的代码生成器。freemarker的数据模型结构通常来说都是一个Map树状结构模型,codgen也不例外,它的数据模型这棵树的根节点一般包含一个TableModel(表数据模型)对象。TableModel顾名思义就是由一张数据库表的元数据信息组成的一个数据模型,有了这个数据模型,再加上一套使用freemarker编写的多层架构模板,就可以生成一套基于这个表的多层架构代码文件。
总的来说,codgen具有以下主要功能及特性:
- 采用freemarker的构建公式:数据模型+模板=输出,默认使用freeMarker模板引擎来生成代码,但可以通过Builder接口实现其他构建方式。
- 核心数据模型TableModel基于JDBC实现表元数据及其所有字段列的相关元数据信息的封装。
- 数据模型TableModel基于JDBC实现,可以取得大部分元数据信息,个别信息的取得与具体数据库方言有关,可以通过扩展DbProvider来实现。
- 通过实现接口ColumnHandler,可以完成JDBC数据类型到各种编程语言的类型转换操作及更多复杂的操作,如处理Oracle的大写列名以增强列名称的可读性。
- 通过配置可以动态增加或重定义数据模型,并可以被后面的数据模型通过模板语言引用或组装。
- 构建时指定的模板可以是一段文本字符串,也可以是一个文件路径,并且它们的内容里都可以引用已定义的数据模型。
- 构建时指定的输出类型可以是文本,也可以是文件,指定的文件输出路径也可以引用数据模型变量。
- 项目配置引入继承机制,这样就可以重用在父类配置中已定义的数据模型及其他配置信息。
- 项目配置信息可以分开多个配置文件存放,codgen一次性加载并缓存起来以加速之后的访问。
下图为基于codgen开发的一个代码生成实践示范项目mycodgen:
总结
虽然说codegen通常需要包含一个TableModel来生成基于某张数据库表的一系列代码文件,但是可以动态去修改这些数据模型的内容,包括增加、替换和移除这棵数据模型树的任一个节点。简而言之,只要保证被解析的模板引用到的哪些数据模型存在即可。
文章最后如果对技术文章,以及干货内容,程序员生活类文章,感兴趣的朋友们可以关注收藏转发一下,期待下一次的文章吗,那就抓紧关注我吧。
猜你喜欢
- 2025-09-06 13.通过Excel导出数据库中的维值_数据库exp导入导出数据
- 2025-09-06 做数据分析时,SQL需要达到以下水平
- 2025-09-06 Java开发指南:JDK21下载、安装及目录解析,轻松开启编程之旅
- 2025-09-06 hive存储过程_hive存储过程环境变量
- 2025-09-06 Maven常用命令_maven常用命令有哪些
- 2025-09-06 JDK从8升级到21的问题集_jdk更新到几了
- 2025-09-06 Oracle狂刷存在感 NRF展会惊艳四座
- 2025-09-06 哪些软件支持UDI标签的生成与验证
- 2025-09-06 发票开票自动化系统解决方案-彻底解决手工开发票烦恼
- 2025-09-06 从 Oracle 到 TiDB,通过ETL工具,高效实现数据拉通
你 发表评论:
欢迎- 09-0613.通过Excel导出数据库中的维值_数据库exp导入导出数据
- 09-06做数据分析时,SQL需要达到以下水平
- 09-06Java开发指南:JDK21下载、安装及目录解析,轻松开启编程之旅
- 09-06hive存储过程_hive存储过程环境变量
- 09-06Maven常用命令_maven常用命令有哪些
- 09-06JDK从8升级到21的问题集_jdk更新到几了
- 09-06Oracle狂刷存在感 NRF展会惊艳四座
- 09-06哪些软件支持UDI标签的生成与验证
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)