V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
twofox
V2EX  ›  程序员

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

  •  
  •   twofox · 2023-07-31 17:09:58 +08:00 · 1815 次点击
    这是一个创建于 483 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    4 条回复    2023-08-01 11:26:11 +08:00
    wanniwa
        1
    wanniwa  
       2023-07-31 18:03:42 +08:00
    嗯是的,就是比较表结构,然后生成对应表的 变更的 sql 语句
    huzhizhao
        2
    huzhizhao  
       2023-07-31 23:50:08 +08:00 via iPhone
    是不是以为有啥黑科技?哈哈哈
    xausky
        3
    xausky  
       2023-08-01 10:13:48 +08:00
    低代码引擎本质就是一个 SQL 拼接器,我在公司写过好几版低代码了
    isSamle
        4
    isSamle  
       2023-08-01 11:26:11 +08:00
    语言模型也是力大砖飞,本质上是大量数据调试出来的 N 参数数学模型
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3886 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:31 · PVG 18:31 · LAX 02:31 · JFK 05:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.