Skip to content

元表格

ArchForge 提供低代码元表格能力,管理员可在后台界面定义表、字段、索引与约束,系统自动创建物理 PostgreSQL 表、执行 Schema 演进、管理行数据,并生成前后端完整模块脚手架。

功能特性

可视化表设计

通过管理端界面定义表元数据:

属性说明
表格编码唯一机器可读标识,作为物理表名后缀
表格名称人类可读展示名
表前缀物理表前缀,默认 meta_
状态启用(1)/ 禁用(0)
描述可选备注

支持的字段类型

类型PostgreSQL 映射说明
STRINGVARCHAR(length)默认长度 255
TEXTTEXT长文本
INTEGERBIGINT整数
DECIMALNUMERIC(precision, scale)默认 NUMERIC(18,2)
BOOLEANBOOLEAN布尔值
DATEDATE日期
DATETIMETIMESTAMP无时区时间戳
TIMESTAMPTZTIMESTAMPTZ带时区时间戳
ENUMVARCHAR(length)选项以 JSON 列表存储
JSONJSONBJSON 文档
GEOJSONB地理/JSON 数据
FILEVARCHAR(512)文件引用
UUIDUUIDUUID 值
ARRAYelement_type[]STRING、INTEGER、DECIMAL、BOOLEAN 数组

字段属性

每个字段可配置:

  • 长度 / 精度 / 小数位 — 用于字符串、小数与数组元素大小
  • 可空 / 必填 — 控制 NOT NULL
  • 默认值 — 存储为类型化默认值
  • 唯一 — 强制唯一值
  • 索引 / 索引类型 / 索引分组 — 单列或组合索引(BTREEGINGISTFULLTEXT
  • 可搜索 — 在数据列表搜索表单中显示
  • 列表可见 — 默认在数据表格中显示
  • 租户字段 / 所有者字段 — 用于多租户或行所有者语义
  • 选项 — ENUM 类型的值列表
  • 引用表 / 引用列 — 用于外键关系描述

Schema 演进

当表定义更新时,SchemaDiffEngine 比较旧字段列表与新字段列表,生成有序的迁移计划:

  1. RENAME_COLUMN(重命名列)
  2. DROP_COLUMN(删除列)
  3. ADD_COLUMN(新增列)
  4. ALTER_TYPE(修改类型)
  5. ALTER_DEFAULT(修改默认值)
  6. ALTER_NULL(修改可空性)
  7. ALTER_INDEX(修改索引)

AlterTableDdlGenerator 将每个变更转换为安全的 PostgreSQL ALTER TABLE DDL。迁移历史保存在 sys_meta_table_migration,可导出为 Flyway SQL 文件。

数据 CRUD

表定义完成且物理表创建后,可进行:

  • 分页查询行数据并支持动态过滤
  • 插入新行
  • 更新已有行
  • 软删除行
  • 从 CSV/JSON 导入数据
  • 导出为 EXCEL/CSV/JSON

代码生成

每个元表格可一键生成完整模块脚手架,使用 FreeMarker 模板:

后端(默认 example/<tableCode>

  • build.gradle.kts
  • domain/{Entity}.java
  • dao/{Entity}Dao.java
  • dto/{Entity}CreateRequest.java
  • dto/{Entity}UpdateRequest.java
  • dto/{Entity}ListRequest.java
  • dto/{Entity}Response.java
  • dto/{Entity}PageResult.java
  • service/{Entity}Service.java
  • rest/{Entity}Controller.java
  • 错误码 / 异常 / 项目模块类
  • 集成测试骨架

前端(默认 src/views/<tableCode>

  • src/api/<tableCode>.ts
  • src/router/modules/<tableCode>.ts
  • src/views/<tableCode>/utils/types.ts
  • src/views/<tableCode>/utils/hook.tsx
  • src/views/<tableCode>/index.vue
  • src/views/<tableCode>/form/index.vue

生成的 Controller 将列表、导出、导入委托给 MetaTableCrudService,复用动态表运行时。

数据模型

sys_meta_table

字段类型说明
idBIGINT主键
table_codeVARCHAR(64)表格编码,唯一
table_nameVARCHAR(128)展示名称
descriptionVARCHAR(512)备注
table_prefixVARCHAR(32)物理表前缀,默认 meta_
statusINT启用 1 / 禁用 0
creator_idBIGINT创建人
create_timeTIMESTAMP创建时间
updater_idBIGINT更新人
update_timeTIMESTAMP更新时间
deletedINT软删除标记

sys_meta_table_column

字段类型说明
idBIGINT主键
table_idBIGINT关联 sys_meta_table
column_codeVARCHAR(64)字段编码
column_nameVARCHAR(128)展示名称
data_typeVARCHAR(32)支持的字段类型之一
lengthINT长度或最大尺寸
precisionINT数值精度
scaleINT数值小数位
nullableINT1 可空,0 必填
default_valueVARCHAR(255)默认值
is_uniqueINT唯一标记
is_requiredINT必填标记
is_searchableINT可搜索标记
is_list_visibleINT列表可见标记
is_indexINT索引标记
sortINT显示顺序
optionsTEXTJSON 选项列表
reference_tableVARCHAR引用表
reference_columnVARCHAR引用列
tenant_columnBOOLEAN租户字段
owner_columnBOOLEAN所有者字段
index_typeVARCHAR索引类型
index_groupVARCHAR索引分组
array_element_typeVARCHAR数组元素类型

sys_meta_table_migration

字段类型说明
idBIGINT主键
table_idBIGINT关联元表格
versionINT版本号
change_typeVARCHAR(32)RENAME/DROP/ADD/ALTER_*
column_codeVARCHAR(64)受影响字段
old_column_codeVARCHAR(64)重命名前列名
old_type / new_typeVARCHAR(64)变更前后类型
old_default / new_defaultVARCHAR(255)变更前后默认值
ddl_sqlTEXT生成的 DDL
statusVARCHAR(16)PENDING / EXECUTED
executed_atTIMESTAMP执行时间

API 接口

所有接口均需要 ADMIN 角色。

方法接口说明
POST/meta-table元表格分页列表
GET/meta-table/{id}元表格详情(含字段)
POST/meta-table/create创建元表格
PUT/meta-table/{id}更新表与字段
POST/meta-table/{id}/copy复制元表格
POST/meta-table/{id}/generate生成前后端代码
GET/meta-table/{id}/delete-check检查能否删除
DELETE/meta-table/{id}?force={false|true}删除元表格
GET/meta-table/{id}/migrations查询 Schema 迁移历史
GET/meta-table/{id}/export-migration导出迁移为 Flyway SQL
POST/meta-table/{id}/data查询动态表数据
POST/meta-table/{id}/data/create插入一行
PUT/meta-table/{id}/data/{dataId}更新一行
POST/meta-table/{id}/data/{dataId}/delete软删除一行
GET/meta-table/{id}/export?format=EXCEL导出表数据
POST/meta-table/{id}/import?format=CSV导入表数据

管理端界面

管理端元表格模块位于 /src/views/meta-table/

  • 元表格列表 — 按编码/名称搜索、分页展示、新增/修改/复制/删除/生成代码
  • 表设计器 — 弹窗编辑表元数据与字段列表
  • 数据管理 — 打开某张表的数据网格,执行增删改查、搜索、导入、导出
  • 所有按钮受 meta:table:* 权限控制

权限点

权限说明
meta:table:list查看元表格
meta:table:query查询元表格数据
meta:table:add创建元表格
meta:table:edit更新元表格
meta:table:remove删除元表格
meta:table:export导出元表格数据
meta:table:design设计字段
meta:table:data管理行数据
meta:table:generate生成代码脚手架

典型使用流程

  1. 创建元表格,填写唯一编码、名称与表前缀。
  2. 添加字段:选择类型、长度、约束、索引等。
  3. 保存设计;后端自动创建物理表 {prefix}{table_code}
  4. 切换到数据视图,进行增删改查、导入或导出。
  5. (可选)点击生成代码生成前后端完整模块脚手架。
  6. 需求变更时再次编辑表格;系统自动计算并应用 Schema 迁移 DDL。

相关页面

Released under the MIT License.