虽然很不爽 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 的表单增删改查的原理基本上清晰了。跟我设想的什么代码热更新没有什么关系,没有黑科技,只有力大砖飞
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.