



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、什么是codgen?Codgen是一个基于数据库元数据模型,使用freemarker模板引擎来构建输出的代码生成器。freemarker的数据模型结构通常来说都是一个Map树状结构模型,codgen也不例外,它的数据模型这棵树的根节点一般包含一个TableModel(表数据模型)对象。TableModel顾名思义就是由一张数据库表的元数据信息组成的一个数据模型,有了这个数据模型,再加上一套使用freemarker编写的多层架构模板,就可以生成一套基于这个表的多层架构代码文件。 1.1 codgen的数据模型虽然说codgen通常需要包含一个TableModel来生成基于某张数据库表的一系列代码文件,但是可以动态去修改这些数据模型的内容,包括增加、替换和移除这棵数据模型树的任一个节点。简而言之,只要保证被解析的模板引用到的那些数据模型存在即可。 1.2 codgen的模板codgen的模板支持两种格式,一种是text(文本格式);另一种是file(文件格式)。 1.3 codgen的输出Codgen的输出和模板一样,也支持两种输出格式,一种是text(文本格式);另一种是file(文件格式)。 2、如何使用codgen2.1 下载最新的codgen.jar及其依赖包由于codgen不是一个独立的项目,本着不重新发明轮子的原则,依赖于一些比较流行的开源框架。因此除了需要下载最新的codgen.jar包文件以外,还要下载以下jar文件: commons-lang.jar 或以上兼容版本 commons-logging.jar或以上兼容版本 log4j-1.2.14或以上兼容版本 freemarker-2.3.13或以上兼容版本 除了以上4个必须依赖的开源包以外,由于codgen的TableModel元数据是通过JDBC来获取的,还需要下载对应数据库方言的JDBC驱动包,比如SQLServer2005的JDBC驱动包是sqljdbc.jar。目前codgen默认只支持Oracle10gSQLServer2000SQLServer2005三种数据库版本。但是可以通过扩展实现codgen提供的DbProvider接口来支持更多的数据库版本。 Oracle10g的JDBC驱动包:ojdbc14.jar SQLServer2000的JDBC驱动包:msbase.jar、mssqlserver.jar和msutil.jar SQLServer2005的JDBC驱动包:sqljdbc.jar 2.2 编写codgen配置文件虽然不使用配置文件的方式也可以实现整个代码的构建操作,但是为了减少使用代码的编写量及方便日后维护,建议使用配置文件来声明构建所依赖的一些信息,譬如数据模型变量声明,输出模型变量声明,以及数据库信息提供者等一些可以与代码分离的配置信息。以下就是一段比较完整的配置文件: com.microsoft.sqlserver.jdbc.SQLServerDriver jdbc:sqlserver:/SQL2005;DatabaseName=MUCM_DG;selectMethod=cursor sa sa template/AOWork D:/QtoneProject/TengenCode/$copyright.author/$projectName com.qtone.aow.model.$groupName com.qtone.aow.model.$groupName com.qtone.aow.dao.$groupName com.qtone.aow.dao.$groupName com.qtone.aow.bll.$groupName com.qtone.aow.bll.$groupName com.qtone.aow.app.$groupName dao.ftl $outputDirectory/Bll.java $outputDirectory/BllImpl.java 2.3 编写客户端调用代码2.3.1 Web环境下使用示例(以struts为例) private ActionForward generate(ActionMapping mapping, GenerateForm generateForm, HttpServletRequest request, HttpServletResponse response) BuildModel buildModel = generateForm.getBuildModel(); /取得指定项目名称的配置信息 ProjectConfig projectConfig = ProjectConfigHelper .getProjectConfig(this.getServlet().getServletContext() , buildModel.getProjectName(); /实例化一个项目构建配置对象 ProjectBuildConfig buildConfig = new ProjectBuildConfig(projectConfig); /设置数据库表名称(Sys_UserInfo) buildConfig.setTableName(buildModel.getTableName(); /设置表标签(如:用户信息) buildConfig.setTableLabel(buildModel.getTableLabel(); /设置分组名称(通常为表 名称的前缀,如:Sys) buildConfig.setGroupName(buildModel.getGroupName(); /设置模块名称(如:UserInfo) buildConfig.setModuleName(buildModel.getModuleName(); /设置版本的创建人 buildConfig.getCopyright().setAuthor(buildModel.getAuthor(); /由一个构建配置对象实例化一个代码生成器对象 Builder builder = new CodeBuilder(buildConfig); builder.build(); /执行构建操作 return mapping.findForward(INPUT_FORWARD); 在web环境下,codgen是这样去寻找配置文件来加载的:如果web.xml配置了名称为“codgen.config”的上下文初始化参数(相对于WEB-INF目录下的文件路径,多个文件名以英文逗号分隔);如果未配置该参数,则默认读取类路径根目录下的codgen-config.xml,所以在这种情况下请确保src目录下存在codgen-config.xml文件。 2.3.2 非web环境下使用示例 public static void main(String args) /取得默认的项目配置信息,在非web环境下调用传递参数null即可,但配置文件必须是src目录下的codgen-config.xml ProjectConfig projectConfig = ProjectConfigHelper.getDefaultProjectConfig(null); ProjectBuildConfig buildConfig = new ProjectBuildConfig(projectConfig); buildConfig.setTableName(Sys_UserInfo); /buildConfig.setTableLabel(用户信息); /不设置默认为表注释,表注释为空时则使用表名称 /buildConfig.setGroupName(System); /不设置默认为Sys /buildConfig.setModuleName(UserInfo); /不设置默认为UserInfo /buildConfig.getCopyright().setAuthor(黄天政); /不设置默认为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年互联网行业人才招募与培养服务合同
- 2025年医养结合项目土地租赁及合作开发合同
- 2025年智能家用节能冰箱大宗采购合作协议
- 2025年企业数字化转型项目财务总监服务合同(AI赋能版)
- 2025年学校特色课程开发与教师专业成长服务全面合作协议
- 2025年度光伏玻璃生产线自动化升级改造合同
- 2025年度工商局企业股权质押贷款业务执行细则合同
- 2025年能源优化利用咨询与管理服务合同
- 2025年跨境电商物流配送合同范本物流配送
- 2025年商用飞机机载导航系统性能检测服务协议
- 多媒体教室使用的课件
- 2025年军队专业技能岗位文职人员招聘考试(工程机械驾驶员)历年参考题库含答案详解(5卷)
- 2025年下半年广西现代物流集团社会招聘校园招聘笔试参考题库附带答案详解(10套)
- 2025年粉笔辅警考试题库
- 2025年小学教研室教学计划
- 2025年上海市建筑工程施工合同模板
- 高中英语必背3500单词表完整版
- 医药代表销售技巧培训
- 牛的品种及生物学特性
- 阿特拉斯变频无油螺杆空压机说明书
- 口腔解剖生理学颞下颌关节精选课件
评论
0/150
提交评论