低代码动态建表黑科技:解析JVS低代码的「配置即表结构」原理

0 阅读1分钟

传统开发中,每新增一个功能都要手动写 SQL 建表、同步实体类,烦不烦?低代码平台号称能“拖拽生成应用”,背后的动态建表到底是怎么做到的?

在JVS低代码里,业务模型在后端被转化为真实的数据库表——核心是 模型定义 + DDL自动生成 + Diff 变更检测。今天用它 v2.5 的源码,从字段类型映射、DDL 生成到非破坏性变更,完整拆解一遍。

image.png

一、整体流程

用户前端配模型 → 存为 JSON → 后端 Diff → 执行 DDL(或 Alter)→ 记录版本快照,保证升级无感。

二、核心源码解析

2.1 字段类型映射

java

public enum JvsFieldType {
    TEXT,      // 短文本 → VARCHAR(255)
    LONG_TEXT, // 长文本 → TEXT
    NUMBER,    // 数字 → DECIMAL(20,4)
    INTEGER,   // 整数 → BIGINT
    DATE,      // 日期 → DATE
    OPTION,    // 选项 → VARCHAR(100)
    REFERENCE; // 关联 → BIGINT
}

public String toColumnDefinition(JvsField field, Dialect dialect) {
    String type = field.getType().getSqlType(dialect);
    StringBuilder sb = new StringBuilder();
    sb.append(field.getName()).append(" ").append(type);
    if (field.isRequired()) sb.append(" NOT NULL");
    return sb.toString();
}

2.2 Diff 变更检测

java

public List<SchemaChange> diff(Model oldModel, Model newModel) {
    // 增、改、删字段解析(删字段只做软删——重命名)
    // …
}

上代码可以清晰看到:每一个前端配置的模型,最终都生成了实实在在的建表语句。

聊聊你们的实践:你们公司在设计“跑不起复杂业务”的元模型遇到过哪些坑?评论区欢迎讨论。