# 代码生成模板管理

# 概述

本功能用于配置代码生成的模板,支持用户自定义代码生成的内容。

【菜单路径】:系统配置化平台 -> 元数据 -> 代码生成模板管理

# 配置模板

点击页面新增或编辑按钮,即可配置模板,一个模板内可配置多个文件,文件内容语法为freemarker,详细规则参考freemarker模板引擎官方文档 (opens new window)

  • 模板基本信息
字段名 字段说明
编码 必填,全局唯一,最大长度为75
名称 必填, 最大长度为75
  • 文件信息
字段名 字段说明
编码 必填,模板内唯一,最大长度为75
名称 必填, 最大长度为75
文件命名规则 必填, 最大长度为75
文件扩展名 必填, 最大长度为75
文件类型 必填, JAVA文件/Resoure文件

提示

1、生成的文件最终的命名为:实体名+自定义名称+文件扩展名,如实体名为User,自定义名称为Service,文件扩展名为java,最终生成的文件名为UserService.java。

2、文件类型决定文件生成的位置:Java文件类型生成的文件在的main/java下;Resource文件类型生成的文件在main/resources下。

# 模板参数

模板文件中的可用参数为系统内置,具体如下:

{
  "packagePath": "com.mediway.hos.model", //当前文件包路径
  "author": "dx", //作者
  "email": "dx@163.com", //作者邮箱
  "urlPrefix": "/test/AHosAppPerson",//controller url前缀
  "entityName": "AHosAppPerson",// 实体类名称
  "apiServiceName": "hos-app-test",//api服务名
  "entityComment": "人员表",//实体类注释
  "primaryKeyType": "1",//主键类型 1:唯一主键 2:联合主键
  "hasParentId": false,//是否有父主键
  "parentType": "String",//父id类型
  "tableName": "人员表",//表名称
  "tableCode": "a_hos_app_person",//表编码
  "i18nTable": "hos_app_person_i18n",//自定义国际化翻译表
  "databaseEncrypt": true,//是否进行数据库加解密
  "primaryKeyFieldType": "String",//主键字段类型
  "parentIdFieldCode": "",//父主键编码
  "idFieldCode": "id",//主键字段编码
  "strategyName": "ASSIGN_UUID",//主键策略
  "entityParentName": "BaseEntity",//父实体名称
  "entityParentPackagePath": "com.mediway.hos.database.model.BaseEntity",//父实体包路径
  "mapperParentName": "MppBaseMapper",//父实体mapper名称
  "mapperParentPackagePath": "com.github.jeffreyning.mybatisplus.base.MppBaseMapper",//父实体mapper包路径
  "serviceParentName": "BaseService",//父实体service名称
  "serviceParentPackagePath": "com.mediway.hos.database.service.BaseService",//父实体service包路径
  "serviceImplParentName": "BaseServiceImpl",//父实体service impl名称
  "serviceImplParentPackagePath": "com.mediway.hos.database.service.impl.BaseServiceImpl",//父实体父实体service impl包路径
  "onlys": ["code"],//需要唯一性校验的字段集合
  "isTree": false,//是否是树形实体
  "isOpenI18n": true,//是否需要国际化
  "i18nFieldList": ["name"],//需要国际化的字段集合
  "primaryKeyCodeList": ["id"],//主键字段集合
  "ancestorsFieldCode": "",//祖级主键
  "entityFields": [{//业务字段集合(不含父模板字段)
    "comment": "编码",//字段注释
    "persist": true,//是否持久化
    "type": "String",//字段Java类型
    "mainType": "string",//字段主类型
    "columnName": "code",//字段表名称
    "fieldName": "code",//字段实体名称
    "notNull": false,//非空
    "notBlank": true,//是否必填
    "i18n": false,//是否需要国际化
    "databaseEncrypt": true,//是否需要数据库加解密
    "dataCheck": "^d{6,}$",//数据校验正则表达式
    "dataCheckMessage": "",//数据校验失败提示信息
    "businessType": 1, //业务类型(编码含义请查看数据字典
    "maxValue": "",//最大值
    "minValue": "",//最小值
    "fieldLength": 32,//字段长度
    "isPrimary": 0 //是否主键
  }, {
    "comment": "名称",
    "persist": true,
    "type": "String",
    "mainType": "string",
    "columnName": "name",
    "fieldName": "name",
    "notNull": false,
    "notBlank": false,
    "i18n": true,
    "databaseEncrypt": false,
    "dataCheckMessage": "",
    "maxValue": "",
    "minValue": "",
    "fieldLength": 75,
    "isPrimary": 0
  }],
  "allFields": [{//所有字段集合(含父模板字段)
    "comment": "编码",
    "persist": true,
    "type": "String",
    "mainType": "string",
    "columnName": "code",
    "fieldName": "code",
    "notNull": false,
    "notBlank": true,
    "i18n": false,
    "databaseEncrypt": true,
    "dataCheckMessage": "",
    "maxValue": "",
    "minValue": "",
    "fieldLength": 32,
    "isPrimary": 0
  }],
  "relatefields": [{// 关联关系字段集合
    "type": "List<AHosAppMenu>", //字段类型
    "fieldName": "menuList", //字段名称
    "annotation": "BindMiddleEntityList", //注解
    "entity": "AHosAppMenu.class", //关联实体名
    "condition": "menu_id = id", //关联关系
    "middleEntity": "AHosAppPersonMenu.class", //中间表实体名
    "middleCondition": "id = person_id" //中间表关联关系
  }, {
    "type": "List<AHosAppPersonEdu>",
    "fieldName": "eduList",
    "annotation": "BindEntityList",
    "entity": "AHosAppPersonEdu.class",
    "condition": "id = person_id"
  }],
  "codePackageMap": { //文件包路径Map<文件编码,包路径>
    "Mapper": "com.mediway.hos.mapper", 
    "Entity": "com.mediway.hos.model", 
    "MapperXml": "mapper", 
    "ServiceImpl": "com.mediway.hos.service.impl", 
    "Service": "com.mediway.hos.service", 
    "Api": "com.mediway.hos.api", 
    "Controller": "com.mediway.hos.controller" 
  },
  "codeClassNameMap": { //文件类名Map<文件编码,类名>
    "Mapper": "AHosAppPersonMapper", 
    "Entity": "AHosAppPerson", 
    "MapperXml": "AHosAppPersonMapper", 
    "ServiceImpl": "AHosAppPersonServiceImpl", 
    "Service": "AHosAppPersonService", 
    "Api": "AHosAppPersonApi", 
    "Controller": "AHosAppPersonController" 
  }
}