[低代码 jeecg-boot] 原来低代码真的是力大砖飞(笑

302 天前
 twofox

虽然很不爽 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_headonl_cgform_fieldonl_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 的表单增删改查的原理基本上清晰了。跟我设想的什么代码热更新没有什么关系,没有黑科技,只有力大砖飞

1590 次点击
所在节点    程序员
4 条回复
wanniwa
302 天前
嗯是的,就是比较表结构,然后生成对应表的 变更的 sql 语句
huzhizhao
302 天前
是不是以为有啥黑科技?哈哈哈
xausky
301 天前
低代码引擎本质就是一个 SQL 拼接器,我在公司写过好几版低代码了
isSamle
301 天前
语言模型也是力大砖飞,本质上是大量数据调试出来的 N 参数数学模型

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/961258

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX