Java 的低代码平台是如何实现创建表并且生成对应的接口的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
twofox
V2EX    Java

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

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

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

    研究的平台是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 还要重启?
    wa8n
        4
    wa8n  
       2023-06-25 07:36:39 +08:00 via iPhone
    不懂实现啊,如果写一个或多个带 pathvariable 变量的 requestmapping ,是不是就能解决单表基础增删改查了?
    chunworkhard
        5
    chunworkhard  
       2023-06-25 08:40:39 +08:00
    不是热更新吧,还没了解过, 我感觉是统一有个增删改查的接口,只要数据库中新增了表 , 后台动态查询配置 读取表 以及 映射字段 返回给前端, 前端这块应该也是有个统一的表单 列表页面吧, 通过读取后台的配置信息 生成相应的页面, 或者有其他方式
    rockddd
        6
    rockddd  
       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  
       2024-01-10 14:00:20 +08:00
    @wxw752 老哥求一份商业版的 jar 包,可以购买。谢谢
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2989 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 13:12 PVG 21:12 LAX 05:12 JFK 08:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86