性能文章>SpringBoot版的低代码开发平台,关联无 SQL,性能高10倍!>

SpringBoot版的低代码开发平台,关联无 SQL,性能高10倍!原创

1年前
246422

你好,我是 Guide。今天在逛开源社区的时候,发现了一个基于 Spring Boot 技术体系的低代码开发平台 Diboot 挺有意思的,号称“关联无 SQL,性能高 10 倍”。

  • Gitee 地址: https://gitee.com/dibo_software/diboot
  • 官网: https://www.diboot.com

体系架构图

diboot平台组成结构图

主要技术栈

  • 后端 Java + 关系数据库,跟紧 Spring 体系 (Spring Boot、Spring Cloud)
  • ORM 站队 Mybatis,通用 Mapper 框架选用 Mybatis-plus
  • 权限: Spring Boot 版本使用 Shiro+JWT;Spring Cloud 版本使用 Spring Security + Oauth2
  • 前后分离,前端选型 Vue,支持 ElementUI 和 Antd vue pro

基于 diboot-core 的 CRUD 和常规关联的

设计理念

  • Web 开发需要一个普适的基础框架,把复杂的问题简单化,最好还能做到更佳性能,让开发人员避开常见问题
  • 程序员很难被替代,但程序员应该聚焦于数据结构设计、业务实现、难点解决,提高解决问题的能力(未来竞争力)
  • 低代码是未来的趋势,CRUD 类重复有规律的工作应该交给工具去做

效果图

演示地址:http://demo.diboot.com/

工作台:

代码生成:

事务管理:

组织管理:

 

特点

  • 基础组件高效简化,SQL 代码减少 80%以上,降低开发门槛
  • 优雅注解省掉关联查询场景的 SQL 代码,彻底告别重复 CRUD
  • 更优的 RBAC 权限与访问控制 (权限自动提取、无状态、多方式登录)
  • 定时任务、消息通知、Excel 导入导出等组件更合理的实践封装...
  • 单体应用、移动端、微服务、工作流,更广的开发场景覆盖

优势

  • 极简易用(pom 中引入依赖 jar,配置参数后,即可随应用启动 UI 界面)
  • 功能强大(数据结构与代码同步、前后端、面板组件、移动端一键生成)
  • 代码标准(devtools 标准化了数据结构定义与代码规范,降低维护成本)
  • 配置灵活(可按需配置生成代码路径、模块前缀及 LombokSwagger
  • 支持多库(支持 MySQL、PostgreSQL、达梦、人大金仓等 7 种主流数据库)

基础组件

1、 diboot-core: 精简优化内核:写的更少,性能更好

主要特性:

  • 单表 CRUD 无 SQL
  • 关联绑定无 SQL(注解自动绑定)
  • 数据字典无 SQL(注解自动绑定)
  • 跨表查询无 SQL(自动构建 QueryWrapper 与查询)
  • BaseService 扩展增强,支持常规的单表及关联开发场景接口
  • 其他常用工具类、状态码、异常处理的更优实践封装

基于 diboot-core 的 CRUD 和常规关联的功能实现,代码量比传统 Mybatis 项目减少 80%+,且性能更好更易维护。

详细文档: https://www.diboot.com/guide/diboot-core/introduce.html

2、IAM 身份认证基础组件 及 配套 VUE 前端框架(diboot-antd-admin、diboot-element-admin)

  • 开箱即用的 RBAC 角色权限模型与预置组织人员岗位模型
  • 基于无状态 token 的认证授权,支持刷新 token
  • 简化的 BindPermission 注解,支持兼容 shiro 的简化权限配置与自动鉴权
  • 自动提取需要鉴权的后端接口, 借助前端功能方便配置菜单按钮权限
  • 无缝适配 redis,引入 redis 依赖即可启用 shiro 的 redis 缓存
  • 支持基于注解的数据权限实现、简化的 Log 注解记录操作日志等
  • 支持灵活的扩展能力(扩展多种登录方式、灵活替换用户实体类、自定义缓存等)

详细文档:https://www.diboot.com/guide/diboot-iam/introduce.html

3、diboot-file 文件相关处理组件

  • EasyExcel 轻量封装,支持 Java 注解校验与@ExcelBind注解实现字典及关联字段的 name-value 转换,并提供完善的校验错误提示
  • 文件存储接口化,预置本地存储,简单扩展 OSS、分布式存储等实现
  • 封装常用的文件上传下载、图片压缩水印等常用处理

详细文档: https://www.diboot.com/guide/diboot-file/introduce.html

4、diboot-scheduler 定时任务组件

  • Quartz 定时任务统一管理及日志的最佳实践封装
  • @CollectThisJob 注解提供定时任务定义,自动收集供前端选择

详细文档: https://www.diboot.com/guide/diboot-scheduler/introduce.html

5. diboot-message 消息通知组件

  • 通用的消息模板&模板变量的设计方案
  • 支持多通道的消息通知发送

详细文档: https://www.diboot.com/guide/diboot-message/introduce.html

6. diboot-mobile 移动端组件

  • 提供了配套的 diboot-mobile-ui ,内置了多种登录方式
  • 支持 账号密码登录、微信小程序登录(自动注册)微信公众号登录(自动注册)

详细文档: https://www.diboot.com/guide/diboot-mobile/introduce.html

使用

1. 克隆 playground 项目

以 IDEA 为例:

"File -> New -> Project from version control..."菜单打开克隆项目对话框:

新建项目

URL 中输入如下 playground 项目路径,指定项目本地路径(避免中文路径),点击 Clone 按钮:

https://gitee.com/dibo_software/playground.git
克隆项目

提示:如没有 git 环境,也可以通过访问 https://gitee.com/dibo_software/playground 下载项目 zip 包导入的方式创建项目。

提示:master 分支为正式版本,体验请基于 master 分支。

待克隆完成后,在右侧 Maven 视图中,添加 demo 项目下的 pom.xml,以让 IDEA 识别为 maven 项目。

设置maven项目

2. 准备空数据库

在你的开发库中创建一个数据库实例,比如: playground

-- mysql示例
CREATE DATABASE playground DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;

根据你本地情况修改 application.properties 中的配置参数,比如:

  • 数据库连接信息:
    • spring.datasource.url=
    • spring.datasource.username=
    • spring.datasource.password=
  • 前端项目相对路径(前端 Vue 框架选择 antd 还是 element,默认是 antd):
    • diboot.devtools.output-path-admin-ui=diboot-antd-admin/
  • 默认本地文件存储路径:
    • diboot.component.file.storage-directory=D:/temp/playground

3. 运行 demo 项目

  • 点击 "Add Configuration...",添加 DemoApplication 启动类配置。添加的应用类型可以选择"Spring Boot" 或 "Application"(社区版 IDEA)。
运行

注意:取消勾选 "JMX agent" 选项,以免报 JMX 异常信息干扰查看控制台日志。

进入 devtools 正常情况下启动完毕会打印如下 devtools 入口信息:

-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- Diboot devtools v2.x.x 初始化完成:
-> URL: http://localhost:8080/api/diboot/index.html
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

如您的 IDEA 启动完成并未打印出该信息,则您的版本对 maven 的 provided 支持有差异,需要手动删除 devtools 依赖配置中的:

<scope>provided</scope>

如下图所示:

移除provided

提示:devtools 是开发过程工具,正式打包前需要剔除 devtools 依赖。

4. 使用 devtools 初始化代码

点击控制台中打印出的 URL,进入 devtools 操作页面。(个人用户初次使用需要扫码)

初次启动 devtools 会提示初始化组件的基础代码(为了方便自定义修改,devtools 将 controller 等代码生成到本地项目中)。依次点击各组件的"生成代码"按钮。

生成初始代码

打开 demo 目录下的 java 目录,将会看到相关组件的初始化代码已生成。

5. 重启 demo 后端项目

重启 DemoApplication,确保新生成的后端代码生效

注意 :因登录验证相关的 controller 需要在步骤 4 中生成,如启动前端后发现验证码无法显示,则需要检查是否执行了步骤 4 并重启了后端项目。

6. 启动前端

安装 node 运行环境 (node 版本建议选择 v14.x,以避免兼容性问题)

切换到对应的前端路径下,依次运行以下命令,安装依赖组件及运行前端:

# yarn(推荐)
yarn install
yarn run serve
# 或者 npm
npm install
npm run serve

启动成功后,打开链接进入前端,输入账号: admin/123456 登录系统,即可进入管理后台。

登录

以上就完成了 diboot 基础项目的初始化搭建,接下来我们来体验使用 devtools 生成代码吧。

7. 使用 devtools 生成后端代码

点击"数据表管理"菜单,在这里可以建表、维护表字段与关联关系、索引、生成及更新后端代码等。

数据表管理

8. 使用 devtools 生成前端代码

devtools 除了具备后端能力外,还有强大的 CRUD、导入导出、前端组件编排、移动端等完整功能的生成能力 (devtools 订阅用户专享,新用户可免费体验 7 天)。

点击控制台中打印出的 devtools URL,进入 devtools 操作页面,点击"PC 前端功能生成" 或 "前端面板组件生成" 或 "移动端前端生成", 在这里可以配置生成前端页面增删改查、导入导出、弹框表单、多 tab 页展示、树形结构、时间轴、统计图表、移动端等各种场景的前端代码生成。

 

点赞收藏
Guide哥

个人网站:javaguide.cn

请先登录,查看2条精彩评论吧
快去登录吧,你将获得
  • 浏览更多精彩评论
  • 和开发者讨论交流,共同进步

为你推荐

实现定时任务的六种策略

实现定时任务的六种策略

2
2