虽然很不爽 jeecg-boot 开源开一半的做法。但是还是需要尊重开源协议 本文声明:不提供反混淆后的代码,也不会运用于商业项目,本文仅提供学习。
一个多月前,我在 V2 真诚地提问,低代码平台是怎么实现的动态创建表、然后立马就实现增删改查的接口的?许多大佬给出了实现思路原帖
一个月过去了,我把 jeecg-boot 的 Online 模块给搞懂的了
在 jeecg-module-system/jeecg-system-biz/pom.xml
中,引入了一个 jar 包
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>hibernate-re</artifactId>
</dependency>
这个 jar 包就是 online 模块的代码
通过反编译+自己的摸索后发现,online 表单开发的数据主要存储在: onl_cgform_head
、onl_cgform_field
、onl_cgform_index
三个表内。
每次新增一个表单(/jeecgboot/online/cgform/api/addAll
),后端校验、补充默认字段后,通过 mybatis-plus 保存到数据库。
点击同步到数据库(online/cgform/api/doDbSynch/{code}/{synMethod}
):根据 code 获取上面提到的三个表的数据,然后判断 sysMethod 。如果是 force ,则先删除表再建表,如果是 normal ,则判断是不是存在表。不存在->新建表。存在->通过 JDBC 的 Connect.getMetaData();可以获取现在数据库所拥有的字段,然后跟用户配置的表的字段进行比较,多的字段删除,少的字段新增。所有的 DDL ,都是用过工具类,一个一个字段的生成的。生成完之后直接通过 mybatis 执行。
增加数据(jeecg-boot/online/cgform/api/form/{code}
):接收 json ,根据 code ,查询表的列名。遍历 json 里的数据,使用工具类生成 insert sql 。
至此,jeecg-boot 的表单增删改查的原理基本上清晰了。跟我设想的什么代码热更新没有什么关系,没有黑科技,只有力大砖飞
1
wanniwa 2023-07-31 18:03:42 +08:00
嗯是的,就是比较表结构,然后生成对应表的 变更的 sql 语句
|
2
huzhizhao 2023-07-31 23:50:08 +08:00 via iPhone
是不是以为有啥黑科技?哈哈哈
|
3
xausky 2023-08-01 10:13:48 +08:00
低代码引擎本质就是一个 SQL 拼接器,我在公司写过好几版低代码了
|
4
isSamle 2023-08-01 11:26:11 +08:00
语言模型也是力大砖飞,本质上是大量数据调试出来的 N 参数数学模型
|