代码生成器rapidframework 快速开发资料.docx
- 文档编号:5474179
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:19
- 大小:812.58KB
代码生成器rapidframework 快速开发资料.docx
《代码生成器rapidframework 快速开发资料.docx》由会员分享,可在线阅读,更多相关《代码生成器rapidframework 快速开发资料.docx(19页珍藏版)》请在冰点文库上搜索。
代码生成器rapidframework快速开发资料
quick_start_guild
UpdatedJul21,2010bybad...@
∙介绍
∙环境介绍
∙struts2+spring+hibernate详细搭建介绍
o1.创建一个struts2_demo的webproject
o2.拷贝rapid-framework至项目根目录
o3.设置项目的编码为utf-8
o4.设置源码路径
o5.将generator/lib的jars加入classpath
o6.安装插件hibernate及struts2
o7.在mysql数据库中创建表user_info
o8.修改生成器配置文件generator.xml的jdbc数据库连接信息其它属性暂不修改
o9.运行代码生成器GeneratorMain.java
o10.拷贝生成的代码至项目根目录,并刷新项目
o11.修改java_src/spring/applicationContext-datasource.xml的数据库连接信息
o12.部署应用struts2_demo至tomcat
o13.启动tomcat,访问URL:
介绍
以下将详细描述struts2+hibernate的项目搭建方法,其它的项目组合如(springmvc+iBatis,struts2+jdbc)可以参考如下步骤.
注意:
请使用firefox或是IE7阅读本wiki,IE6显示有问题
环境介绍
∙IDE:
MyEclipse6.5
∙数据库:
Mysql5
∙JDK:
1.5
struts2+spring+hibernate详细搭建介绍
1.创建一个struts2_demo的webproject
注意:
Webrootfoler的值为web
2.拷贝rapid-framework至项目根目录
将rapidframework.zip解压出来的内容全部拷贝至项目根目录,拷贝完效果如下.
3.设置项目的编码为utf-8
右键点击项目,修改项目属性
4.设置源码路径
5.将generator/lib的jars加入classpath
点击"Addjars"按钮将生成器依赖的jar包需要加入classpath
注:
如果使用Eclipse,需要将web/WEB-INF/lib下jars和Tomcat的servlet-api.jar加入。
6.安装插件hibernate及struts2
项目为插件结构,web框架及dao层需要安装(可以安装不同的web框架或是dao层)
打开plugins/build.xml,并打开eclipse的Outline视图
现运行install_dao_hibernate及install_web_struts2任务,请注意安装顺序
7.在mysql数据库中创建表user_info
在test数据库创建表,运行如下sql
CREATETABLEuser_info(
user_idbigint PRIMARYKEYAUTO_INCREMENT,
usernamevarchar(50)notnull,
passwordvarchar(50),
birth_datedate,
sexint,
ageint
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
注:
需要自行将数据库中插入相应的数据。
8.修改生成器配置文件generator.xml的jdbc数据库连接信息其它属性暂不修改
mysql:
//localhost:
3306/test?
useUnicode=true&characterEncoding=UTF-8
9.运行代码生成器GeneratorMain.java
以application的方式运行cn.org.rapid_framework.generator.GeneratorMain,直接修改源码,在便生成不同的表.
10.拷贝生成的代码至项目根目录,并刷新项目
生成器生成的文件默认会输出在d:
/webapp-generator-output
注:
缺省Hibernate生成代码为注解方式,可以手工选择other目录下生成的XML方式代码进行替换。
11.修改java_src/spring/applicationContext-datasource.xml的数据库连接信息
该配置是应用需要连接的数据库,与生成器的数据库连接是分开配置的,与第8步的数据库连接配置相同即可
mysql: //localhost: 3306/test? useUnicode=true&characterEncoding=UTF-8"/> 注: 如果生成代码缺省包不是以com开头,需要修改spring下相关的XML文件。 12.部署应用struts2_demo至tomcat 13.启动tomcat,访问URL: http: //localhost: 8080/struts2_demo/pages/UserInfo/list.do ∙核心理念 ∙通常代码生成器存在的问题. ∙特性 ∙生成器的运行 o在eclipse中运行 o独立版运行 ∙生成器讲解 o生成器模板路径可以引用相关变量 o自动搜索某个目录所有模板文件,无需配置 o代码生成器模板可以引用的相关变量 o每个模板有gg变量可以控制自身的自定义配置(每一个模板都会创建新的gg实例) o支持生成(gen)及删除操作(del),即生成的代码也可以很方便的删除 o自动拷贝二进制文件至输出目录 o自动删除模板扩展名: .ftl,.vm o模板自动include同级目录: macro.include文件 ogenerator.xml(或者generator.properties)配置文件 o十.数据库表配置,用于自定义生成器模板引用的table变量 o生成的代码插入文档的某个部位 ∙创建一个模板 o代码template目录结构 o创建一个生成器模板文件 ∙生成器参数配置 ∙生成器核心类图 ∙重复生成代码 ∙参考 ogenerateByTable() ogenerateBySql() ogenerateByClass() oGG控制变量参考 otable变量参考 ocolumn变量参考] osql变量参考 o模板引擎freemarker 核心理念 为你生成一切,再根据所需手工copy回工作区 通常代码生成器存在的问题. ∙二次开发困难,没有源码可以修改模板文件的model对象等 ∙过于智能,自动插入我们的项目中,程序员还需考虑旧的代码会不会被覆盖的问题 ∙生成文件的时候让你选要生成那些文件,而rapid只负责生成代码,这样生成器核心一分精简 ∙没有将存放模板的目录名称及文件名称利用起来,导致还需配置每个模板文件生成的文件名,目录结构 ∙具体请查看我写的文章: 为何代码生成器都要这么智能呢? 特性 ∙基于FreeMarker模板语言,并且模板易于修改 ∙基于数据库,内建好数据库的model,并支持多种数据库(mysql,sqlserver,oracle测试通过) ∙半手工方式,生成的代码放在某个目录,再手工拷贝回来工作区 ∙易于做二次开发,整个生成器本身就是java源代码,源代码核心十分精简,并且鼓励你修改代码,也可以作为任何语言的代码生成器 ∙配置简单,只有一个配置文件generator.properties 生成器的运行 在eclipse中运行 1.配置classpath,将generator/lib中的rapid-generator.jar及其它数据库驱动加入classpath 2.修改generator.xml的数据库连接属性及其它属性 3.以application的方式运行GeneratorMain类,要生成不同的table,直接修改代码即可 publicclassGeneratoMain{ publicstaticvoidmain(String[]args)throwsException{ GeneratorFacadeg=newGeneratorFacade(); g.deleteOutRootDir(); //删除生成器的输出目录 // g.generateByTable("table_name","template"); //通过数据库表生成文件,template为模板的根目录 g.generateByAllTable("template"); //自动搜索数据库中的所有表并生成文件,template为模板的根目录 // g.generateByClass(Blog.class,"template_clazz"); // g.deleteByTable("table_name","template");//删除生成的文件 } } 4.以application方式运行cn.org.rapid_framework.generator.ext.CommandLine 独立版运行 下载standandalone-rapid-generator.zip,解压并运行rapid-gen.bat 独立版下载地址 生成器讲解 生成器模板路径可以引用相关变量 示例: dao/${basepackage_dir}/${className}.java,根据该变量生成输出文件 如果basepackage_dir=com/company/rapid,className=UserInfo 那么完整路径则为: dao/com/company/rapid/UserInfo.java 自动搜索某个目录所有模板文件,无需配置 代码生成器模板可以引用的相关变量 1.g.generateByTable("table_name")方法可以引用的变量 table: cn.org.rapid_framework.generator.provider.db.table.model.Table 2.g.generateByClass("class")方法可以引用的变量 clazz: cn.org.rapid_framework.generator.provider.java.model.JavaClass 3.g.generateBySql(Sql)方法可以引用的变量 sql: cn.org.rapid_framework.generator.provider.db.sql.model.Sql 4.公共变量 env: 系统环境变量 System.getProperties(): 直接引用,没有前缀 generator.properties文件中的所有属性,直接引用,没有前缀 gg: 模板控制变量,cn.org.rapid_framework.generator.GeneratorControl 每个模板有gg变量可以控制自身的自定义配置(每一个模板都会创建新的gg实例) 如是否生成,是否覆盖目标文件,甚至是生成其它文件示例: ${gg.setIgnoreOutput(true)},参考: rapid_generator_gg 支持生成(gen)及删除操作(del),即生成的代码也可以很方便的删除 自动拷贝二进制文件至输出目录 如模板目录下的zip,rar,doc文件将会自动拷贝至输出目录,不会破坏文件格式(通过扩展名自动识别) 自动删除模板扩展名: .ftl,.vm 举例: 如你有一个模板SqlMap.xml.ftl将变为SqlMap.xml所以你要生成ftl扩展名的文件,应该将文件名从list.ftl=>list.ftl.ftl 模板自动include同级目录: macro.include文件 示例: 如你的模板为java_src/com/project/UserDao.java,将自动include: java_src/com/project/macro.include及根目录的macro.include generator.xml(或者generator.properties)配置文件 1.类似ant可以变量引用,引用环境变量使用${env.JAVA_HOME},引用System.getProperties()直接引用 2.自动替换generator.properties中的句号(.)为反斜杠,设置key为key+"dir"后缀 示例: pkg=pany=>pkg_dir=com/company 十.数据库表配置,用于自定义生成器模板引用的table变量 配置文件必须存放在classpath: generator_config/table/table_name.xml(该文件生成器可以生成,自己再自定义修改) -- javaType="自定义javaType" unique="是否唯一性约束"nullable="是否可以为空"pk="是否主键,在表没有主键的情况下,可以指定一个代理主键" updatable="是否可以更新"insertable="是否插入" enumString="枚举值,以分号分隔,示例值: M(1,男);F(0,女)或者是: M(男);F(女)" enumClassName="如果枚举有值,生成的类名称将是这个,没有枚举值,该配置无用.示例值: Sex" /> --> javaType="String" unique="false"nullable="true"pk="false" updatable="true"insertable="true" enumString="F(1,Female);M(0,Male)"enumClassName="用户枚举" /> javaType="String" unique="false"nullable="true"pk="false" updatable="true"insertable="true" enumString=""enumClassName="PasswordEnum" /> 生成的代码插入文档的某个部位 如模板输出生成的地方已经有该同名的文件存在,并且该文件中有包含"generator-insert-location"标记,则模板生成的内容会插入在该标记之后.该特性对如生成的spring配置内容插入spring配置文件十分有用 创建一个模板 代码template目录结构 如上所示,目录及文件名称可以引用相关变量。 创建一个生成器模板文件 在temppate目录创建一个文件,如${className}SpringControler.java则代码生成器会自动将该模板文件加载并生成该文件 充分利用各种文件的注释如在.xml中我们可以使用 --generator-insert-location-->在.properties文件中我们可以使用#generator-insert-location具体请查看template/insert_demo目录的内容 生成器参数配置 通过设置GeneratorProperties.setProperty(key,value)设置相关参数值.完整的配置参数请查看: 生成器核心类图 ∙Generator为生成器引擎 ∙GeneratorFacade为生成器入口调用类 ∙GeneratorProperties生成器的相关配置,用于读取generator.properties(或者是generator.xml) ∙TableFactory用于创建Table.java对象,用于GeneratorFacade.generateByTable()使用 ∙SqlFactory用于创建Sql.java对象,用于GeneratorFacade.generateBySql()使用 ∙JavaClass模板变量,用于GeneratorFacade.generateByClass()使用 重复生成代码 现rapid自带的模板都不支持重复生成代码的,如果你需要重复生成代码,可以采用继承机制技巧重复生成。 Java代码的重复生成,善用"继承机制",示例如下: UserInfoBaseDao: 自动生成的代码,不能手工修改,用于重复生成 UserInfoDaoextendsUserInfoBaseDao: 存放手工的代码,不能重复生成 页面的重复生成还没有啥好办法。 参考 generateByTable() 通过表(或视图)查询生成代码 generateBySql() 通过sql语句生成代码 generateByClass() 通过javaclass生成代码 GG控制变量参考 gg控制变量 table变量参考 Table.java请使用IE查看table模板变量参考 column变量参考] Column.java请使用IE查看 sql变量参考 Sql.java请使用IE查看 模板引擎freemarker 语法参考:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 代码生成器rapidframework 快速开发资料 代码 生成器 rapidframework 快速 开发 资料