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

Java 的低代码平台是如何实现创建表并且生成对应的接口的?

  •  1
     
  •   twofox · 2023-06-25 01:29:59 +08:00 · 2686 次点击
    这是一个创建于 396 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近想要学习一下低代码平台的实现细节(好在下家混点业绩

    研究的平台是jeecgboot

    里面有个 online 表单开发(非开源功能,但是开发非商业使用),也就是通过配置的方式,生成表.然后通过代码生成器生成对应的代码,只要在 IDEA 重启这个项目,就可以实现增删改查的接口和页面

    商业版还有个在线表单设计,那个是一设计好表,就可以立马使用增删改查的接口的,也不需要重启,看起来像是热更新的技术。

    请问这种效果有什么实现思路吗?

    演示地址: http://boot3.jeecg.com/

    演示账号

     登录账号 1:jeecg
     登录密码 1:jeecg#123456
     登录账号 2:qinfeng
     登录密码 2:jeecg#123456
    

    ps:非开源的商业功能,都是通过依赖他们混淆过后的 jar 包实现的 ps: 这种开源开一半的是真难受啊

    12 条回复    2024-01-10 14:00:20 +08:00
    mineralsalt
        1
    mineralsalt  
       2023-06-25 01:34:23 +08:00
    这个项目挺好用的, 我现在开发的项目都是基于这个开源项目, 不用重复造轮子, 非常省事, 缺点就是比较臃肿, 但是无所谓, 你说的这个特性我没用过, 我都是建表之后, 下载代码复制到项目中, 因为重要编辑很多页面细节, 不可能完全使用他的在线表单
    twofox
        2
    twofox  
    OP
       2023-06-25 01:55:05 +08:00
    @mineralsalt 对的,这个 online 表单其实就已经很好用了。但是有个缺点就是不可以商用,在公司用还是有点风险的。
    并且我是比较想要学习他的热更新那块的技术实现。
    musi
        3
    musi  
       2023-06-25 06:40:05 +08:00 via iPhone
    不理解,创建表然后增删改查不都是 sql 就能完成的嘛,Java 执行 sql 还要重启?
    wangsongyan
        4
    wangsongyan  
       2023-06-25 07:36:39 +08:00 via iPhone
    不懂实现啊,如果写一个或多个带 pathvariable 变量的 requestmapping ,是不是就能解决单表基础增删改查了?
    chunworkhard
        5
    chunworkhard  
       2023-06-25 08:40:39 +08:00
    不是热更新吧,还没了解过, 我感觉是统一有个增删改查的接口,只要数据库中新增了表 , 后台动态查询配置 读取表 以及 映射字段 返回给前端, 前端这块应该也是有个统一的表单 列表页面吧, 通过读取后台的配置信息 生成相应的页面, 或者有其他方式
    wxw752
        6
    wxw752  
       2023-06-25 08:57:43 +08:00
    我们公司用的就是 jeecg 的商业版,5#说的是对的。其实就是每次打开的时候,前端 for 循环里 疯狂 if else 出需要的组件,最后组成表单页面
    litchinn
        7
    litchinn  
       2023-06-25 09:03:43 +08:00
    正好做过低代码项目

    生成代码是通过模板引擎,只要你模板写的够全,能生成的代码就够细致

    那个不需要部署代码就生效的倒是没做过,估计是传递表名等参数实现的动态查询,不推荐这种方式(但他们也不一定是这种方式实现的)。

    低代码核心主要是两块,一个是代码生成,主要是写模板,另一个是对基础包的封装,也就是一个项目的基本配置,比如登录认证,用户管理,接口的标准化等等每个项目都需要的内容。将生成的 crud 代码放进这个基础包以完成功能开发。做的复杂点可以把基础包也做成可生成可定制的。

    代码生成器可以看看这个
    http:www.ballcat.cn/codegen/
    https://github.com/ballcat-projects/ballcat-codegen

    基础包配置的做法可以参考 jhipster https://github.com/jhipster/jhipster-bom ,他有个 CLI 可以命令行里初始化项目,但是我个人并不觉得这个好用,我自己现在是用模板引擎去配置

    ps:jeecg 这个项目的代码质量前两年一直为人所诟病,有些功能的实现方式也有点问题。口碑毁誉参半,不知道现在有没有好点,当然这样的项目能开源出来还是好的
    muyiluop
        8
    muyiluop  
       2023-06-25 10:09:56 +08:00
    可以抓包看看他的增删改查接口,想实现也有办法,一种是生成代码直接执行对应的代码。还有就是搞一个通用的增删改查接口,根据传入的 id 匹配对应的表,页面部分也是一样,增 /改的表单从后台获取到有哪些字段是要增加 /修改的,对应展示页面,然后提交保存就行。
    AyaseEri
        9
    AyaseEri  
       2023-06-25 14:46:24 +08:00
    你都看到这了,不妨再进阶一点看看华炎魔方
    Edward4074
        10
    Edward4074  
       2023-06-25 15:15:53 +08:00
    楼上说的都是关于代码生成的,另一个路线是模型化,表结构是元数据,不需要实体类,使用类似 Map 的方式承接数据;这种方式变更的是模型,跟代码无关。
    twofox
        11
    twofox  
    OP
       2023-06-25 16:39:55 +08:00
    @musi 不是,我在意的点是,增删改查的接口,到底是怎么实现的。是通过楼下说传递表名等参数实现的。还是新增代码,进行热更新实现的。
    @wxw752 前端好理解,后端呢?增删改查就是用传递各种表名、列名到统一接口去处理的吗?商业版是花了多少钱的,可以透露么?是带源码的版本么

    @litchinn jeecg 的 online 表单设计功能里面的代码生成就挺好用的。看了一下他们写的代码模板也确实是很详细。其他的技术细节实现的话,我不知道评价如何。但是我只记得大家都喷他假开源,前两年的开源版本,甚至没有任何的低代码功能,跟 ruoyi 没什么两样的。我是最近才发现他把部分的低代码功能开放了(不开源,只有混淆过后的 jar 包)。所以才想研究一下他的实现思路


    @muyiluop 它的接口我用 xrebel 查看了,都是混淆过后的 jar 包实现的。代码生成的功能可以研究一下。但是那个在线表单设计,没有开放使用,也没办法扒拉源码


    @Edward4074 五六楼说的也是模型化的思路吧。不过这种 map ,感觉性能不是很好。现在做的项目,我也做了这种类似的模块


    @AyaseEri 这个确实没听过,我去看看,谢谢
    caikiki
        12
    caikiki  
       196 天前
    @wxw752 老哥求一份商业版的 jar 包,可以购买。谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   959 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 21:42 · PVG 05:42 · LAX 14:42 · JFK 17:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.