如何编写家德瑞ST自定义模板
2013-01-11 16:39
344 查看
家德瑞的自定义模板是基于Velocity的,只要您懂一点velocity模板语法就可以编写家德瑞的ST自定义模板。并且随ST一起发布的有几个写好的模板的例子,可以供大家参考。
自定义模板分两类:标准程序、页面流Demo演示程序。标准程序是指以数据字典为基础,直接生成的标准的程序。页面流Demo演示程序是指以详细设计为基础的,直接生成的符合实际业务流程要求的的Demo演示程序。下面进行分别说明。
根据自定义模板生成的文件会在bin目录中的homeDear下的util目录下。
样例模板由多个文件组成,具体是哪些文件可以由目标系统的编程规则来决定。多个模板文件可以分布在多个目录中。目录的名字、模板的名字可以用变量。
通用规则:如果表名的开头是“tb”则类名开头也是“tb",如果表名中有“_“,则对应到类名中是去掉”_“,然后其后第一个字母大写。
其中“$mainPackage$”是需要单独说明的,在包括“$mainPackage$”字样的目录名下的文件每一个文件就是一组不管在数据字典中主包是多少层的目录结构(也许是:a.b.c也许是:m)都只需要用“$mainPackage$”作为目录名就可以了。这样里面有一个模板文件的话,就会把这个模板文件按着数据字典中同包下的所有的表,每个表都对应着模板生成一个程序文件。($mainPackage$目录,的意思是包名,是excel字典的每一个表的主目录。$mainPackage$目录下的一个模板都会生成一批文件。)
${Bean.basePackageName}基础包
${Bean.beanMemo}bean的注释
${Bean.beanChinaName}bean的中文名
${Bean.beanName}家德瑞规则下bean名字,
${Bean.beanName2}非家德瑞规则下bean名字。类似于$beanName2$的方式。
${Bean.beanNameLittle}bean的对象名。一般是与类名相对应的首字母小写的形式。
${Bean.BeanName2Little}与beanName2相对应的首字母小写的bean名字。
${Bean.keyName}表的主键名
${Bean.keyBeanName}表的主键在bean中所对应的属性名
${Bean.baseDir}文件夹形式的基础包名。
${Bean.tableName}bean所对应的表名
${property.chinaName}属性中文名
${property.mem}属性说明
${property.propertyType}属性的数据类型:Integer、Double、String、java.sql.Data、java.sql.Timestamp
${property.propertyName}属性名
${property.propertyNameFirstBig}首字母大写的属性名
${property.ifNull}属性是否可为空:true:可为空
${property.keyType}bean所对应的表中的主键的类型:自增主键、一般主键、唯一主键、外键、不是主键
${property.fielName}bean中的属性所对应的表的字段名
${property.length}属性值的长度,对应表的字段长度
#end
${one.pTableName}主表的表名
${one.pTableFkColoName}主表的外键字段名
${one.fTableName}/从表的表名
${one.fTablePColoName}从表的主键字段名
${one.opTableName}主表的表名所对应的bean名
${one.opTableFkColoName}主表的外键字段名所对应的bean的属性名
${one.ofTableName}/从表的表名所对应的bean名
${one.ofTablePColoName}从表的主键字段名所对应的bean的属性名
${one.subMo.keyName} 子对象的主键名
${one.subMo.keyBeanName} 子对象的主键名所对应的bean名
#set keyproperty = ${one.subMo.keyPropertyInfo} 主键属性信息,具体可以参考bean集合信息中的关于PropertyInfo对象的说明。
#foreach($property in $one.subMo.propertyList)
具体可以参考bean集合信息中的关于PropertyInfo对象的说明。
#end
#end
${many.rTableName}关系表的表名
${many.rcolo1Name}关系表中的主表外键名
${many.table1Name}表1的表名
${many.table1ColoName}表1的主键字段名
${many.rcolo2Name}关系表中的表2的外键名
${many.table2Name}表2的表名
${many.table2ColoName}表2的主键名。
${many.bean1Name}表一所对应的bean名
${many.Bean2Name}表二所对应的Bean名
${many.bean1NameLittle}表一所对应的首字母小写的bean对象名
${many.bean2NameLittle}表二所对应的首字母小写的bean对象名
#end
#end
${Table.tableName}表名。
${Table.tableMemo}表说明。
${Table.tableChinaName}表的中文名。
${Table.beanName}表名所对应的bean名。
${field.name}字段名
${field.memo}中文名
${field.type}数据类型(可能值包括:字符、整数、小数、日期、日期时间)
${field.length}长度
${field.ifNull}是否可为空
${field.defaultValue}默认值
${field.keyType}主键类型(自增主键、唯一主键、一般主键、外键、不是主键)
${field.ifIndex}是否单字段加入索引
${field.propertyName}表中的某个字段所对应的bean中的属性名。
${field.propertyNameBig}表中的某个字段所对应的bean中的属性名的首字母大写的形式
#end
${one.pTableName}主表表名
${one.pTableFkColoName}主表的外键字段名
${one.fTableName}从表的表名
${one.fTablePColoName}从表的主键字段名
${one.subMo}子表的结构信息(相当于整体表对象)
#end
${many.table1Name}主表表名
${many.table1ColoName}主表主键
${many.table2Name}从表表名
${many.table2ColoName}从表字段名
${many.rTableName}关系表表名
${many.rcolo1Name}关系表中的与主表的主键相对应的外键
${many.rcolo2Name}关系表中的与从表的主键相对应的外键
#end
#end
如果文件的名字是$pageId$,则说明是需要循环生成的。在详细设计中每一个sheet页面(即详细设计文档的页面列表中的所有的页面)就对应一个“$pageId$”,就会生成一个文件。
在一份详细设计文档中包括的是一个功能。我们可以这样划分系统:对于一个系统的分析可以是一个系统包括若干个子系统,一个子系统包括若干个模块,一个模块包括若干个功能。假设一个功能是一个详细设计文档。
${Module.moduleEnglishNameLittle}详细设计中的“封皮”sheet页面中的“模块英文名:”一项中,头一个字母强制小写,其它的保持原样。
${Module.moduleName}模块中文名称。
${Module.moduleMemo}模块功能说明。
${Module.moduleEnglishName}模块英文名,首字母是小写的(因为其会被以包名的规则进行格式化)。
${Module.moduleKeyBig}模块key首字母大写
${Module.moduleKeyLittle}模块key首字母小写
${Module.moduleDot}模块英文名,其中如果存在句点则会被改成“\”
${pageBean.pageId}页面ID
${pageBean.pageName}页面名称
${pageBean.title}页面标题
${pageBean.keywords}页面关键词
${pageBean.description}页面说明
${jump.title} 扭转的标题
${jump.memo} 扭转的说明
${jump.url} 扭转的目标地址
#end
${screen.id}整屏信息的ID
${screen.cssName}整屏信息的样式
#foreach($zarea in $screen.zareaList)
${zarea.cssName}纵屏样式
#foreach($area in $zarea.areaList)
${area.areaChinaName}区块中文名
${area.areaShow}是否显示区域标题
${area.cssName}区块样式
${area.areaType}区块类型,如:form、循环、显示。
#foreach($element in $area.elementList)
${element.elementChinaName}元素中文名
${element.tableName}这个元素所应对的表名
${element.beanName }表所对应的bean名
${element.propertyName}表的字段名所对应的bean的属性名
${element.conType}控件类型
${element.defaultValue}默认值
${element.eventName}事件名
${element.targetUrl}连接目标
${element.memo}说明
${element.chinaNameShow}是否显示中文名
${element.checkStr}check规则
#end
#end
#end
#end
#end
自定义模板分两类:标准程序、页面流Demo演示程序。标准程序是指以数据字典为基础,直接生成的标准的程序。页面流Demo演示程序是指以详细设计为基础的,直接生成的符合实际业务流程要求的的Demo演示程序。下面进行分别说明。
1. 标准程序
1.1. 模板的目录说明
当首次运行家德瑞ST的时候,会在tomcat目录的bin目录中自动创建\homeDear\template\myTemplate\目录,我们如果需要自定义模板,可以把模板放到这里。根据自定义模板生成的文件会在bin目录中的homeDear下的util目录下。
样例模板由多个文件组成,具体是哪些文件可以由目标系统的编程规则来决定。多个模板文件可以分布在多个目录中。目录的名字、模板的名字可以用变量。
1.1.1. 目录名、模板名可用变更
变量名 | 说明 |
$dbName$ | 数据库的aleas名字 |
$mainPackage$ | 数据字典中各表的主包名,今后表会与bean有对应关系,这个主包名主要是用于bean的包名。如果几个表都是同一个包名,那么其对应的bean就会在同一个包下。 |
$beanName1$ | 与表相对应的bean的名字。 如表名:tb_abc_defbean则,类名:AbcDef |
$beanName2$ | 与表相对应的bean的名字。 如表名:tb_abc_defbean则类名:TbAbcDef 如表名:abcDefbean则类名:abcDef |
$beanNameLittle$ | 与表相对应的bean的类名所对应的首字字母小写的形式。 |
其中“$mainPackage$”是需要单独说明的,在包括“$mainPackage$”字样的目录名下的文件每一个文件就是一组不管在数据字典中主包是多少层的目录结构(也许是:a.b.c也许是:m)都只需要用“$mainPackage$”作为目录名就可以了。这样里面有一个模板文件的话,就会把这个模板文件按着数据字典中同包下的所有的表,每个表都对应着模板生成一个程序文件。($mainPackage$目录,的意思是包名,是excel字典的每一个表的主目录。$mainPackage$目录下的一个模板都会生成一批文件。)
1.2. “$mainPackage$”目录下模板中可用的变量
在“$mainPackage$”下面的模板文件中可以使用以下变量包括:数据库aleas名字、表集合信息、bean集合信息、某具体的表的信息、某个具体的bean的信息。引用的变量名分别为:$dbName、$TableList、$BeanList、$Table、$Bean。详细如下:1.2.1. 数据库aleas名字
${dbName}数据库的aleas名字1.2.2. bean集合信息
#foreach($Bean in $BeanList)${Bean.basePackageName}基础包
${Bean.beanMemo}bean的注释
${Bean.beanChinaName}bean的中文名
${Bean.beanName}家德瑞规则下bean名字,
${Bean.beanName2}非家德瑞规则下bean名字。类似于$beanName2$的方式。
${Bean.beanNameLittle}bean的对象名。一般是与类名相对应的首字母小写的形式。
${Bean.BeanName2Little}与beanName2相对应的首字母小写的bean名字。
${Bean.keyName}表的主键名
${Bean.keyBeanName}表的主键在bean中所对应的属性名
${Bean.baseDir}文件夹形式的基础包名。
${Bean.tableName}bean所对应的表名
1.2.3. 某个bean中的属性信息
#foreach($property in $Bean.propertyList)${property.chinaName}属性中文名
${property.mem}属性说明
${property.propertyType}属性的数据类型:Integer、Double、String、java.sql.Data、java.sql.Timestamp
${property.propertyName}属性名
${property.propertyNameFirstBig}首字母大写的属性名
${property.ifNull}属性是否可为空:true:可为空
${property.keyType}bean所对应的表中的主键的类型:自增主键、一般主键、唯一主键、外键、不是主键
${property.fielName}bean中的属性所对应的表的字段名
${property.length}属性值的长度,对应表的字段长度
#end
1.2.4. 一对一的主从关系信息
#foreach($one in $Bean.OnetoOne)${one.pTableName}主表的表名
${one.pTableFkColoName}主表的外键字段名
${one.fTableName}/从表的表名
${one.fTablePColoName}从表的主键字段名
${one.opTableName}主表的表名所对应的bean名
${one.opTableFkColoName}主表的外键字段名所对应的bean的属性名
${one.ofTableName}/从表的表名所对应的bean名
${one.ofTablePColoName}从表的主键字段名所对应的bean的属性名
${one.subMo.keyName} 子对象的主键名
${one.subMo.keyBeanName} 子对象的主键名所对应的bean名
#set keyproperty = ${one.subMo.keyPropertyInfo} 主键属性信息,具体可以参考bean集合信息中的关于PropertyInfo对象的说明。
#foreach($property in $one.subMo.propertyList)
具体可以参考bean集合信息中的关于PropertyInfo对象的说明。
#end
#end
1.2.5. 一对多、多对多的主从关系信息
#foreach($many in $Bean.ManytoMany)${many.rTableName}关系表的表名
${many.rcolo1Name}关系表中的主表外键名
${many.table1Name}表1的表名
${many.table1ColoName}表1的主键字段名
${many.rcolo2Name}关系表中的表2的外键名
${many.table2Name}表2的表名
${many.table2ColoName}表2的主键名。
${many.bean1Name}表一所对应的bean名
${many.Bean2Name}表二所对应的Bean名
${many.bean1NameLittle}表一所对应的首字母小写的bean对象名
${many.bean2NameLittle}表二所对应的首字母小写的bean对象名
#end
#end
1.2.6. 某个具体的bean的信息
具体说明见bean集合中的说明。1.2.7. 表集合信息
#foreach($Table in $TableList)${Table.tableName}表名。
${Table.tableMemo}表说明。
${Table.tableChinaName}表的中文名。
${Table.beanName}表名所对应的bean名。
1.2.8. 字段信息
#foreach($field in $Table.coloList)${field.name}字段名
${field.memo}中文名
${field.type}数据类型(可能值包括:字符、整数、小数、日期、日期时间)
${field.length}长度
${field.ifNull}是否可为空
${field.defaultValue}默认值
${field.keyType}主键类型(自增主键、唯一主键、一般主键、外键、不是主键)
${field.ifIndex}是否单字段加入索引
${field.propertyName}表中的某个字段所对应的bean中的属性名。
${field.propertyNameBig}表中的某个字段所对应的bean中的属性名的首字母大写的形式
#end
1.2.9. 本表的一对一从表信息
#foreach($one in $Table.one)一对一的主从关系信息(pojo家德瑞ST.logic.bean.OnetoOne)${one.pTableName}主表表名
${one.pTableFkColoName}主表的外键字段名
${one.fTableName}从表的表名
${one.fTablePColoName}从表的主键字段名
${one.subMo}子表的结构信息(相当于整体表对象)
#end
1.2.10. 本表的多对多从表信息
#foreach($many in $Table.many) 一对多、多对多的主从关系信息(pojo家德瑞ST.logic.bean.ManytoMany)${many.table1Name}主表表名
${many.table1ColoName}主表主键
${many.table2Name}从表表名
${many.table2ColoName}从表字段名
${many.rTableName}关系表表名
${many.rcolo1Name}关系表中的与主表的主键相对应的外键
${many.rcolo2Name}关系表中的与从表的主键相对应的外键
#end
#end
1.3. 非“$mainPackage$”目录下模板中可用变量
在非“$mainPackage$”目录下面的模板文件中可以使用以下变量包括:数据库aleas名字、某具体的表的信息、某个具体的bean的信息,详细如下:1.3.1. 某个具体的bean的信息
具体说明见“$mainPackage$”目录下模板中可用的变更的说明。1.3.2. 单表的信息
具体参见“$mainPackage$”目录下模板中可用的变更的说明。2. 页面流Demo演示程序
2.1. 模板文件的名字中用到的内容
变量名 | 说明 |
$moduleEnglishName$ | 模块英文名、小写形式的包名。 |
$moduleKeyBig$ | 模块key首字母大写。(模块名中有可能出现句点符号,好像是包名一样。这里指的是整个模块名中的最后一个句点后面的部分,注意首字母大写。) |
$moduleKeyLittle$ | 模块key首字母小写。 |
$pageId$ | 页面ID(homeDear中的jsp页面以此为文件名) |
在一份详细设计文档中包括的是一个功能。我们可以这样划分系统:对于一个系统的分析可以是一个系统包括若干个子系统,一个子系统包括若干个模块,一个模块包括若干个功能。假设一个功能是一个详细设计文档。
2.2. 模板中可以引用的变量
2.2.1. 基本信息
${moduleName}小写形式的包名${Module.moduleEnglishNameLittle}详细设计中的“封皮”sheet页面中的“模块英文名:”一项中,头一个字母强制小写,其它的保持原样。
${Module.moduleName}模块中文名称。
${Module.moduleMemo}模块功能说明。
${Module.moduleEnglishName}模块英文名,首字母是小写的(因为其会被以包名的规则进行格式化)。
${Module.moduleKeyBig}模块key首字母大写
${Module.moduleKeyLittle}模块key首字母小写
${Module.moduleDot}模块英文名,其中如果存在句点则会被改成“\”
2.2.2. 某个页面的信息
#foreach($pageBean in $Module.pageList) (或者直接用$Bean来引用也可以)${pageBean.pageId}页面ID
${pageBean.pageName}页面名称
${pageBean.title}页面标题
${pageBean.keywords}页面关键词
${pageBean.description}页面说明
2.2.3. 页面加载时扭转说明
#foreach($jump in $pageBean.jumpBeanList) 页面加载时扭转说明${jump.title} 扭转的标题
${jump.memo} 扭转的说明
${jump.url} 扭转的目标地址
#end
2.2.4. 整屏信息
#foreach($screen in $pageBean.screenList)${screen.id}整屏信息的ID
${screen.cssName}整屏信息的样式
#foreach($zarea in $screen.zareaList)
2.2.5. 纵屏样式
${zarea.id}纵屏ID${zarea.cssName}纵屏样式
#foreach($area in $zarea.areaList)
2.2.6. 区块信息
${area.areaName}区块英文名字${area.areaChinaName}区块中文名
${area.areaShow}是否显示区域标题
${area.cssName}区块样式
${area.areaType}区块类型,如:form、循环、显示。
#foreach($element in $area.elementList)
2.2.7. 元素信息
${element.elementName}元素名(这个元素所应对的表的字段名)${element.elementChinaName}元素中文名
${element.tableName}这个元素所应对的表名
${element.beanName }表所对应的bean名
${element.propertyName}表的字段名所对应的bean的属性名
${element.conType}控件类型
${element.defaultValue}默认值
${element.eventName}事件名
${element.targetUrl}连接目标
${element.memo}说明
${element.chinaNameShow}是否显示中文名
${element.checkStr}check规则
#end
#end
#end
#end
#end
相关文章推荐
- django “如何”系列4:如何编写自定义模板标签和过滤器
- django “如何”系列4:如何编写自定义模板标签和过滤器
- 属性动画资料文件如何编写?property-animation资源文件 属性动画如何自定义TypeEvaluator
- PowerDesigner如何自定义报表模板
- VS中如何自定义新建文件模板
- 如何组织编写模板程序
- 如何在VS2008中使自定义模板实现与项目默认模板同样效果
- 如何在smarty模板中使用自定义函数
- 如何编写自定义注解
- EF 生成实体类的同时生成自定义扩展类的模板编写方法
- 在myeclipse中创建JSP时,如何使用自定义的JSP模板
- Android编写简单的手机通讯录,只是存到数据库里面,并没有显示出来,下次更新显示到自定义适配器的通讯录(这个只是教大家SQLite数据库如何使用)
- 如何利用 Visual Studio 自定义项目或工程模板(转载)
- 使用图集工具 TexturePacker 自定义模板及如何自定义 BMFont类型的模板
- 通达信自定义指标模板如何备份?
- Visual Station如何自定义类文件模板
- 如何在VS2008中使自定义模板实现与项目默认模板同样效果
- 如何组织编写模板程序 (How To Organize Template Source Code)
- 【代码生成】如何生成自定义表单?(4)---几个模板及格式
- 如何把自定义word模板加入到word中我的模板里面