传统开发中,每新增一个功能都要手动写 SQL 建表、同步实体类,烦不烦?低代码平台号称能“拖拽生成应用”,背后的动态建表到底是怎么做到的?
在JVS低代码里,业务模型在后端被转化为真实的数据库表——核心是 模型定义 + DDL自动生成 + Diff 变更检测。今天用它 v2.5 的源码,从字段类型映射、DDL 生成到非破坏性变更,完整拆解一遍。
一、整体流程
用户前端配模型 → 存为 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) {
// 增、改、删字段解析(删字段只做软删——重命名)
// …
}
上代码可以清晰看到:每一个前端配置的模型,最终都生成了实实在在的建表语句。
聊聊你们的实践:你们公司在设计“跑不起复杂业务”的元模型遇到过哪些坑?评论区欢迎讨论。