一、模板文件目录
代码生成器模板目录配置于 erp/config/config.ini 文件中,配置为:
## 代码生成片段
[generator]
# 模板文件总目录
input_root = /home/wwerp/templates
# 输出文件总目录
output_root = /home/wwerp/frappe-bench/sites/fuhong.tech/public/files
上述配置中模板文件目录配置为:/home/wwerp/templates
相应地,在服务器上必须存在该目录,该目录下每个子目录代表一套模板。在代码生成的页面,系统会读取这些子目录,显示为模板供选择:
二、模板文件
在一个模板目录下,一般包含3个子目录:
1. code目录
代码目录,如Java、C#代码。可以根据代码子包,自由定义子目录。
2. config目录
配置目录,如SQL DDL建表文件、MyBatis的xml映射文件
3. page目录
页面目录,如jsp、html文件
上述code目录、config目录、page目录下可以包含多个子目录,子目录下又可以包含多个模板文件,所谓模板文件,如下所示:
每个模板文件文件名上面可以带变量,变量以符号“[]”包含,模板文件文件名变量包括:
变量名称 | 变量含义 |
[TableName] | 数据库表名,如:system_user_base |
[TableDesc] | 数据库表名称(描述),如:系统用户基本信息 |
[ModuleName] | 模块名称,比如system_user_base表对应ModuleName为:system |
[PojoName] | POJO的名称,比如system_user_base表对应PojoName为:User |
[LowerFirstPojoName] | POJO的名称(首字母小写),比如system_user_base表对应LowerFirstPojoName:user |
三、模板文件内容
以code模板为例,模板文件内容可能是一段java代码,不过代码中有很多的变量标签,比如以下部分模板文件内容:
模板文件使用 Jinja2 模板技术编写,针对一个具体的数据库表,生成相应的代码内容。有关 Jinja2 模板技术的语法,可以参见网站文档:http://doc.yonyoucloud.com/doc/jinja2-docs-cn/index.html
除 Jinja2 模板技术常用函数外,增加了下列过滤器:
过滤器名称 | 过滤器含义 | 原数据 | 过滤器参数 |
str | camel(upperFirst : bool) | 将带有下划线“_”的字符串转变为驼峰格式的字符串 | @param str 带有下划线“_”的字符串 | @param upperFirst 首字母是否大写 |
str | removeSuffix(suffix : str) | 指定源字符串末尾删除后缀 | @param str 源字符串 | @param suffix 需要删除的后缀 |
str | upperFirst | 指定源字符串首字母变为大写 | @param str 源字符串 | |
str | lowerFirst | 指定源字符串首字母变为小写 | @param str 源字符串 | |
str1 | startsWith(str2 : str) | 检查str1是否以str2开头 | @param str1 字符串1 | @param str2 字符串2 |
str1 | endsWith(str2 : str) | 检查str1是否以str2结尾 | @param str1 字符串1 | @param str2 字符串2 |
模板文件使用的数据对象及其属性如下:
四、生成的文件目录规则
模板目录下子目录任意,一般含有3个目录code、config、page,其中code目录表示代码模板目录,该目录下的生成的文件目录规则遵守如下约定:
设:
1.代码Code包前缀:cn.js.icode
2.数据库表名称:basis_employee_base
3.存在模板:\code\entity\[PojoName].java
则:
1.该数据库表对应所属模块:basis
2.该数据库表对应PojoName:Employee
3.上述模板\code\entity\[PojoName].java将生成:
cn.js.icode.basis.entity.Employee
并按照以下目录格式放入结果压缩保中:
cn\js\icode\basis\entity\Employee.java
除code子目录外,模板目录下其它子目录下的模板文件无类似约定。
南京复弘教育科技有限公司版权所有,转载请标明出处!!