快速又不失灵活性的JeecgBoot框架

 简介JeecgBoot

开源界 "小普元" 超越传统商业平台。引领低代码开发模式 (OnlineCoding-> 代码生成器 -> 手工 MERGE),低代码开发同时又支持灵活编码, 可以帮助解决 Java 项目 70% 的重复工作,让开发更多关注业务。既能快速提高开发效率,节省成本,同时又不失灵活性。

🔥JeecgBoot—Vue3版前端源码,采用 Vue3.0+TypeScript+Vite+Ant-Design-Vue等新技术方案,包括二次封装组件、utils、hooks、动态菜单、权限校验、按钮级别权限控制等功能。 是JeecgBoot低代码平台的vue3技术栈的全新UI版本,功能强于vue2版。

GitHub - jeecgboot/jeecgboot-vue3

🔥「企业级低代码平台」前后端分离架构SpringBoot 2.x/3.x,SpringCloud,Ant Design&Vue,Mybatis,Shiro,JWT。强大的代码生成器让前后端代码一键生成,无需写任何代码! 引领新的开发模式OnlineCoding->代码生成->手工MERGE,帮助Java项目解决70%重复工作,让开发更关注业务,既能快速提高效率,帮助公司节省成本,同时又不失灵活性。

GitHub - jeecgboot/jeecg-boot

技术特征

  • 采用最新主流前后分离框架(SpringBoot+Mybatis-plus+Ant-Design+Vue),容易上手;代码生成器依赖性低,灵活的扩展能力,可灵活实现二次开发;

  • 开发效率很高,采用代码生成器,单表数据模型和一对多 (父子表)、树列表等数据模型,增删改查功能自动生成,菜单配置直接使用(前端代码和后端代码都一键生成);

  • 代码生成器提供强大模板机制,支持自定义模板风格。目前提供四套风格模板(单表两套、一对多两套)

  • 封装完善的用户、角色、菜单、组织机构、数据字典、在线定时任务等基础功能。强大的权限机制,支持访问授权、按钮权限、数据权限、表单权限等

  • 零代码在线开发能力,在线配置表单、在线配置报表、在线配置图表、在线设计表单

  • 常用共通封装,各种工具类 (定时任务,短信接口,邮件发送,Excel 导入导出等), 基本满足 80% 项目需求

  • 简易 Excel 导入导出,支持单表导出和一对多表模式导出,生成的代码自带导入导出功能

  • 集成简易报表工具,图像报表和数据导出非常方便,可极其方便的生成图形报表、pdf、excel、word 等报表;

  • 采用前后分离技术,页面 UI 精美,针对常用组件做了封装:时间、行表格控件、截取显示控件、报表组件,编辑器等等

  • 查询过滤器:查询功能自动生成,后台动态拼 SQL 追加查询条件;支持多种匹配方式(全匹配 / 模糊查询 / 包含查询 / 不匹配查询);

  • 数据权限(精细化数据权限控制,控制到行级,列表级,表单字段级,实现不同人看不同数据,不同人对同一个页面操作不同字段

  • 在线配置报表(无需编码,通过在线配置方式,实现曲线图,柱状图,数据等报表)

  • 页面校验自动生成 (必须输入、数字校验、金额校验、时间空间等);

  • 提供单点登录 CAS 集成方案,项目中已经提供完善的对接代码

  • 表单设计器,支持用户自定义表单布局,支持单表,一对多表单、支持 select、radio、checkbox、textarea、date、popup、列表、宏等控件

  • 专业接口对接机制,统一采用 restful 接口方式,集成 swagger-ui 在线接口文档,Jwt token 安全验证,方便客户端对接

  • 接口安全机制,可细化控制接口授权,非常简便实现不同客户端只看自己数据等控制

  • 高级组合查询功能,在线配置支持主子表关联查询,可保存查询历史

  • 提供各种系统监控,实时跟踪系统运行情况(监控 Redis、Tomcat、jvm、服务器信息、请求追踪、SQL 监控)

  • 消息中心(支持短信、邮件、微信推送等等)

  • 集成 Websocket 消息通知机制

  • 提供 APP 发布方案:

  • 支持多语言,提供国际化方案;

  • 数据变更记录日志,可记录数据每次变更内容,通过版本对比功能查看历史变化

  • 平台 UI 强大,实现了移动自适应

  • 平台首页风格,提供多种组合模式,支持自定义风格

  • 提供简单易用的打印插件,支持谷歌、IE 浏览器等各种浏览器

  • 示例代码丰富,提供很多案例参考

  • 采用 maven 分模块开发方式

  • 支持菜单动态路由

  • 权限控制采用 RBAC(Role-Based Access Control,基于角色的访问控制)

技术架构

#### 开发环境

- 语言:Java 8+ (小于17)

- IDE(JAVA): IDEA (必须安装lombok插件 )

- IDE(前端): Vscode、WebStorm、IDEA

- 依赖管理:Maven

- 缓存:Redis

- 数据库脚本:MySQL5.7+  &  Oracle 11g & Sqlserver2017(其他数据库,[需要自己转](https://my.oschina.net/jeecg/blog/4905722))


#### 后端

- 基础框架:Spring Boot 2.6.6

- 微服务框架: Spring Cloud Alibaba 2021.0.1.0

- 持久层框架:MybatisPlus 3.5.1

- 报表工具: JimuReport 1.5.2

- 安全框架:Apache Shiro 1.8.0,Jwt 3.11.0

- 微服务技术栈:Spring Cloud Alibaba、Nacos、Gateway、Sentinel、Skywalking

- 数据库连接池:阿里巴巴Druid 1.1.22

- 日志打印:logback

- 其他:autopoi, fastjson,poi,Swagger-ui,quartz, lombok(简化代码)等。


#### 前端

- Vue2版本:`Vue2.6+@vue/cli+AntDesignVue+Viser-vue+Vuex等`  [详细查看](https://github.com/jeecgboot/ant-design-vue-jeecg)
- Vue3版本:`Vue3.0+TypeScript+Vite+AntDesignVue+pinia+echarts等新方案` [详细查看](https://github.com/jeecgboot/jeecgboot-vue3)

#### 支持库

|  数据库   |  支持   |
| --- | --- |
|   MySQL   |  √   |
|  Oracle11g   |  √   |
|  Sqlserver2017   |  √   |
|   PostgreSQL   |  √   |
|   MariaDB   |  √   |
|   达梦、人大金仓   |  √   |



## 微服务解决方案


1、服务注册和发现 Nacos √

2、统一配置中心 Nacos  √

3、路由网关 gateway(三种加载方式) √

4、分布式 http feign √

5、熔断降级限流 Sentinel √

6、分布式文件 Minio、阿里OSS √ 

7、统一权限控制 JWT + Shiro √

8、服务监控 SpringBootAdmin√

9、链路跟踪 Skywalking   [参考文档](https://help.jeecg.com/java/springcloud/super/skywarking.html)

10、消息中间件 RabbitMQ  √

11、分布式任务 xxl-job  √ 

12、分布式事务 Seata

13、分布式日志 elk + kafka

14、支持 docker-compose、k8s、jenkins

15、CAS 单点登录   √

16、路由限流   √

实践指南

后端项目

使用IntelliJ IDEA导入后端项目,并选择Maven做项目管理

自动搜索项目依赖

项目SDK选用JAVA JDK1.8.0_181,没有配置的可以在CSDN上找对应操作手册

导入项目后根据POM加载依赖

依赖加载完成后的项目结构

打开DB文件夹下面的升级说明做参考

# 版本升级方法

> JeecgBoot属于平台级产品,每次升级改动较大,目前做不到平滑升级。

### 增量升级方案
#### 1.代码合并
 本地通过svn或git做好主干,在分支上做业务开发,jeecg每次版本发布,可以手工覆盖主干的代码,对比合并代码;

#### 2.数据库升级
- 从3.6.2+版本增加flyway自动升级数据库机制,支持 mysql5.7、mysql8; 
- 其他库请手工执行SQL, 目录: `jeecg-module-system\jeecg-system-start\src\main\resources\flyway\sql\mysql`
> 注意: 升级sql只提供mysql版本;如果有权限升级, 还需要手工角色授权,退出重新登录才好使。

#### 3.兼容问题
 每次发版,会针对不兼容地方重点说明。

项目依赖和数据库初始化SQL都确认到位

项目结构
├─jeecg-boot-parent(父POM: 项目依赖、modules组织)
│  ├─jeecg-boot-base-core(共通模块: 工具类、config、权限、查询过滤器、注解等)
│  ├─jeecg-module-demo    示例代码
│  ├─jeecg-module-system  System系统管理目录
│  │  ├─jeecg-system-biz    System系统管理权限等功能
│  │  ├─jeecg-system-start  System单体启动项目(8080)
│  │  ├─jeecg-system-api    System系统管理模块对外api
│  │  │  ├─jeecg-system-cloud-api   System模块对外提供的微服务接口
│  │  │  ├─jeecg-system-local-api   System模块对外提供的单体接口
│  ├─jeecg-server-cloud           --微服务模块
     ├─jeecg-cloud-gateway       --微服务网关模块(9999)
     ├─jeecg-cloud-nacos       --Nacos服务模块(8848)
     ├─jeecg-system-cloud-start  --System微服务启动项目(7001)
     ├─jeecg-demo-cloud-start    --Demo微服务启动项目(7002)
     ├─jeecg-visual
        ├─jeecg-cloud-monitor       --微服务监控模块 (9111)
        ├─jeecg-cloud-xxljob        --微服务xxljob定时任务服务端 (9080)
        ├─jeecg-cloud-sentinel     --sentinel服务端 (9000)
        ├─jeecg-cloud-test           -- 微服务测试示例(各种例子)
           ├─jeecg-cloud-test-more         -- 微服务测试示例(feign、熔断降级、xxljob、分布式锁)
           ├─jeecg-cloud-test-rabbitmq     -- 微服务测试示例(rabbitmq)
           ├─jeecg-cloud-test-seata          -- 微服务测试示例(seata分布式事务)
           ├─jeecg-cloud-test-shardingsphere    -- 微服务测试示例(分库分表)

连接MySQL数据库,其它数据库需要按操作手册进行对号入座

执行初始化数据库的SQL

问题处理

1071 - Specified key was too long; max key length is 767 bytes

主键key长度太长,超过了767字节。分析主键字段PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`)以及utf8mb4最大支持4个字节长度,那么这三个字段相加*3的长度远超767字节就会出现这个问题。那么对于问题的处理就是增大索引长度限制。

CREATE TABLE `qrtz_blob_triggers` ( `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `TRIGGER_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `TRIGGER_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `BLOB_DATA` blob NULL, PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;

MySQL的innodb_large_prefix参数是为了启用对较长的索引键前缀的支持。在旧版本的InnoDB存储引擎中,索引键前缀的长度限制是767字节,但在某些字符集(如UTF-8)下,这可能导致无法使用完整的索引长度。通过设置innodb_large_prefixon,可以将这个限制提升到3072字节。

InnoDB支持两种文件格式 Antelope和Barracuda:
Antelope :是5.6之前的文件格式,支持InnoDB表的COMPACT和REDUNDANT行格式,共享表空间默认为Antelope
Barracuda:是最新的文件格式,支持所有innodb行格式,包括最新的COMPRESSED和DYNAMIC行格式。

show variables like 'innodb_file_format';

set global innodb_file_format='Barracuda';

show variables like 'innodb_file_format';

在MySQL中,ROW_FORMAT是一个与InnoDB和MyISAM存储引擎相关的选项,它决定了数据在磁盘上的存储方式。对于InnoDB存储引擎,ROW_FORMAT可以影响性能、备份、恢复以及与其他数据库系统的兼容性。对于MyISAM存储引擎,它主要影响数据的存储方式和性能。

如果开启innodb_large_prefix,且Innodb表的存储格式为 DYNAMIC 或 COMPRESSED,则前缀索引最多可包含3072个字节,前缀索引也同样适用。对于上面的索引问题(120+200+200)*4=2080 < 3072,那么就可以创建索引成功,因此需要先开启前缀索引,执行命令如下:

SET GLOBAL INNODB_LARGE_PREFIX = ON;


show variables like 'innodb_large_prefix';

确认表的行格式ROW_FORMAT=DYNAMIC;
返回SQL创建

-- ----------------------------
-- Table structure for qrtz_blob_triggers
-- ----------------------------
DROP TABLE IF EXISTS `qrtz_blob_triggers`;
CREATE TABLE `qrtz_blob_triggers`

jeecg-boot数据库初始化成功后会出现121张数据表

接来下将Maven切换为生产模式prod环境

通过JEECG BOOT生命周期 INSTALL打包

拿到 jeecg-system-start-{版本号}.jar 包

生成的JAR包上传到应用服务器

并通过JAR方式后台启动项目

通过命令启动项目

Window启动命令:
java -jar jeecg-system-start-3.7.0.jar

Linux下后台进程启动命令:
nohup java -jar jeecg-system-start-3.7.0.jar >catalina.out 2>&1 &

关掉项目:
ps -ef|grep java
kill 进程号 

   (_)                          | |               | |
    _  ___  ___  ___ __ _ ______| |__   ___   ___ | |_ 
   | |/ _ \/ _ \/ __/ _` |______| '_ \ / _ \ / _ \| __|
   | |  __/  __/ (_| (_| |      | |_) | (_) | (_) | |_ 
   | |\___|\___|\___\__, |      |_.__/ \___/ \___/ \__|
  _/ |               __/ |                             
 |__/               |___/



Jeecg  Boot Version: 3.7.0
Spring Boot Version: 2.7.18 (v2.7.18)
......

前端项目

安装前端项目依赖

dependencies:
+ @ant-design/colors 7.0.2
+ @ant-design/icons-vue 7.0.1
+ @iconify/iconify 3.1.1
+ @jeecg/online 3.7.0-beta
+ @tinymce/tinymce-vue 4.0.7
+ @traptitech/markdown-it-katex 3.6.0
+ @vue/shared 3.4.21
+ @vueuse/core 10.10.0
+ @zxcvbn-ts/core 3.0.4
+ ant-design-vue 4.1.2
+ axios 1.7.2
+ china-area-data 5.0.1
+ clipboard 2.0.11
+ codemirror 5.65.16
+ cron-parser 4.9.0
+ cropperjs 1.6.1
+ crypto-js 4.2.0
+ dayjs 1.11.10
+ dom-align 1.12.4
+ echarts 5.4.3
+ emoji-mart-vue-fast 15.0.2
+ enquire.js 2.1.6
+ event-source-polyfill 1.0.31
+ highlight.js 11.9.0
+ intro.js 7.2.0
+ lodash-es 4.17.21
+ lodash.get 4.4.2
+ markdown-it 14.0.0
+ markdown-it-link-attributes 4.0.1
+ md5 2.3.0
+ mockjs 1.1.0
+ nprogress 0.2.0
+ path-to-regexp 6.2.1
+ pinia 2.1.7
+ print-js 1.6.0
+ qrcode 1.5.3
+ qs 6.11.2
+ resize-observer-polyfill 1.5.1
+ showdown 2.1.0
+ sortablejs 1.15.2
+ tinymce 6.6.2
+ vditor 3.10.4
+ vue 3.4.21
+ vue-cropper 0.6.4
+ vue-cropperjs 5.0.0
+ vue-i18n 9.10.1
+ vue-infinite-scroll 2.0.2
+ vue-print-nb-jeecg 1.0.12
+ vue-router 4.3.3
+ vue-types 5.1.1
+ vuedraggable 4.1.0
+ vxe-table 4.6.17
+ vxe-table-plugin-antd 4.0.7
+ xe-utils 3.5.26
+ xss 1.0.14

devDependencies:
+ @commitlint/cli 18.6.1
+ @commitlint/config-conventional 18.6.2
+ @iconify/json 2.2.218
+ @purge-icons/generated 0.10.0
+ @rys-fe/vite-plugin-theme 0.8.6
+ @types/codemirror 5.60.15
+ @types/crypto-js 4.2.2
+ @types/fs-extra 11.0.4
+ @types/inquirer 9.0.7
+ @types/intro.js 5.1.5
+ @types/jest 29.5.12
+ @types/lodash-es 4.17.12
+ @types/mockjs 1.0.10
+ @types/node 20.14.2
+ @types/nprogress 0.2.3
+ @types/qrcode 1.5.5
+ @types/qs 6.9.11
+ @types/showdown 2.0.6
+ @types/sortablejs 1.15.8
+ @typescript-eslint/eslint-plugin 6.17.0
+ @typescript-eslint/parser 6.17.0
+ @vitejs/plugin-vue 4.6.2
+ @vitejs/plugin-vue-jsx 3.1.0
+ @vue/compiler-sfc 3.4.4
+ @vue/test-utils 2.4.6
+ autoprefixer 10.4.19
+ commitizen 4.3.0
+ conventional-changelog-cli 4.1.0
+ cross-env 7.0.3
+ cz-git 1.8.0
+ czg 1.8.0
+ dotenv 16.3.1
+ eslint 8.56.0
+ eslint-config-prettier 9.1.0
+ eslint-define-config 2.1.0
+ eslint-plugin-jest 27.9.0
+ eslint-plugin-prettier 5.1.3
+ eslint-plugin-vue 9.26.0
+ esno 4.7.0
+ fs-extra 11.2.0
+ http-server 14.1.1
+ husky 8.0.3
+ inquirer 9.2.23
+ is-ci 3.0.1
+ jest 29.7.0
+ less 4.2.0
+ lint-staged 15.2.2
+ npm-run-all 4.1.5
+ picocolors 1.0.0
+ postcss 8.4.35
+ postcss-html 1.7.0
+ postcss-less 6.0.0
+ prettier 3.3.2
+ pretty-quick 4.0.0
+ rimraf 5.0.5
+ rollup 4.12.0
+ rollup-plugin-visualizer 5.12.0
+ stylelint 16.2.1
+ stylelint-config-prettier 9.0.5
+ stylelint-config-recommended 14.0.0
+ stylelint-config-recommended-vue 1.5.0
+ stylelint-config-standard 36.0.0
+ stylelint-order 6.0.4
+ ts-jest 29.1.4
+ ts-node 10.9.2
+ typescript 4.9.5
+ unocss 0.58.5
+ vite 5.2.13
+ vite-plugin-compression 0.5.1
+ vite-plugin-html 3.2.2
+ vite-plugin-mkcert 1.17.5
+ vite-plugin-mock 2.9.8
+ vite-plugin-optimize-persist 0.1.2
+ vite-plugin-package-config 0.1.1
+ vite-plugin-purge-icons 0.10.0
+ vite-plugin-svg-icons 2.0.1
+ vite-plugin-vue-setup-extend-plus 0.1.0
+ vue-eslint-parser 9.4.3
+ vue-tsc 1.8.27

 WARN  Issues with peer dependencies found
.
├─┬ stylelint-config-prettier 9.0.5
│ └── ✕ unmet peer stylelint@">= 11.x < 15": found 16.2.1
├─┬ vite-plugin-optimize-persist 0.1.2
│ └── ✕ unmet peer vite@^2.0.0: found 5.2.13
└─┬ vite-plugin-package-config 0.1.1
  └── ✕ unmet peer vite@^2.0.0: found 5.2.13

修改生产环境的后台服务地址

构建前端项目

更新服务器前端项目

相关配置文档

后台配置一个访问域名

  • nginx监听:80端口
  • 绑定域名(示例):api3.boot.jeecg.com
upstream api3.boot.jeecg.com {
      server 127.0.0.1:8080;
     }  
	 
    server {
        listen       80;
        server_name  api3.boot.jeecg.com;
        location / {
            root   html;
            index  index.html index.htm;
			proxy_pass  http://api3.boot.jeecg.com;
			
			#ip remote_addr
			proxy_set_header X-Forwarded-Scheme  $scheme;
			proxy_redirect    off;     
			proxy_set_header  Host             $host;
			proxy_set_header  X-Real-IP        $remote_addr;
			proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }

Websocket配置

提醒: 有的版本nginx配置需要加上 Upgrade 和Connection 协议头,不然WebSocket会404

 #支持websocket得这么写,不然CentOS上可能失败
 # proxy_http_version 1.1;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "upgrade";

登录系统即可进行相关操作

根据业务需求,做出概念结构设计,完成E-R关系模型的逻辑结构,就可以通过前端设计出表格,系统可以据此自动生成后端JAVA代码和前端VUE代码。

Controller层,控制层,接收前端(View)传过来的参数进行业务操作,负责具体模块的业务流程控制,需要调用service逻辑设计层的接口来控制业务流程。因为service中的方法是我们使用到的,controller通过接收前端H5或者App传过来的参数进行业务操作,再将处理结果返回到前端。

Entity层,别名model层 /domain层,用于存放实体类,与数据库中数据表的属性值基本保持一致,实现set和get的方法。

Service层,存放业务逻辑处理,也是一些关于数据库处理的操作,但不是直接和数据库打交道,他有接口还有接口的实现方法,在接口的实现方法中需要导入mapper层,mapper层是直接跟数据库打交道的,它也是个接口,只有方法名字,具体实现在mapper.xml文件里,service是供我们使用的方法,一般就是自己写的方法封装起来,就是声明一下,具体实现在serviceImpl中。

Service层也可以分为三个方面:

      (a)接口:用来声明方法
      (b)继承实现接口
      (c)impl:接口的实现(将mapper和service进行整合的文件)

Mapper层,也可以称为DAO层,是数据库CRUD的接口,只有方法名,具体实现在mapper.xml文件中,对数据库进行数据持久化操作(把数据放到持久化的介质中,同时提供CRUD操作),在mybatis中方法主要与xxx.xml内相互一一映射。

VUE视图层,兼容VUE2、VUE3组合式API两种方式构建的视图。

├─首页
│  ├─首页(四套首页满足不同场景需求)
│  ├─工作台
├─系统管理
│  ├─用户管理
│  ├─角色管理
│  ├─菜单管理
│  ├─权限设置(支持按钮权限、数据权限)
│  ├─表单权限(控制字段禁用、隐藏)
│  ├─部门管理
│  ├─我的部门(二级管理员)
│  └─字典管理
│  └─分类字典
│  └─系统公告
│  └─职务管理
│  └─通讯录
│  └─对象存储
│  └─多租户管理
├─系统监控
│  ├─网关路由配置(gateway)
│  ├─定时任务
│  ├─数据源管理
│  ├─系统日志
│  ├─消息中心(支持短信、邮件、微信推送等等)
│  ├─数据日志(记录数据快照,可对比快照,查看数据变更情况)
│  ├─系统通知
│  ├─SQL监控
│  ├─性能监控
│  │  ├─监控 Redis
│  │  ├─Tomcat
│  │  ├─jvm
│  │  ├─服务器信息
│  │  ├─请求追踪
│  │  ├─磁盘监控
├─消息中心
│  ├─我的消息
│  ├─消息管理
│  ├─模板管理
├─积木报表设计器
│─报表示例
│  ├─曲线图
│  └─饼状图
│  └─柱状图
│  └─折线图
│  └─面积图
│  └─雷达图
│  └─仪表图
│  └─进度条
│  └─排名列表
│  └─等等
│─大屏模板
│  ├─作战指挥中心大屏
│  └─物流服务中心大屏
├─代码生成器(GUI)
│  ├─代码生成器功能(一键生成前后端代码,生成后无需修改直接用,绝对是后端开发福音)
│  ├─代码生成器模板(提供4套模板,分别支持单表和一对多模型,不同风格选择)
│  ├─代码生成器模板(生成代码,自带excel导入导出)
│  ├─查询过滤器(查询逻辑无需编码,系统根据页面配置自动生成)
│  ├─高级查询器(弹窗自动组合查询条件)
│  ├─Excel导入导出工具集成(支持单表,一对多 导入导出)
│  ├─平台移动自适应支持
│─常用示例
│  ├─自定义组件示例
│  ├─JVxeTable示例(ERP行业复杂排版效果)
│  ├─单表模型例子
│  └─一对多模型例子
│  └─打印例子
│  └─一对多内嵌示例
│  └─异步树Table
│  └─图片拖拽排序
│  └─图片翻页
│  └─图片预览
│  └─PDF预览
│─封装通用组件 
│  ├─行编辑表格JVxeTable
│  └─省略显示组件
│  └─时间控件
│  └─高级查询 (未实现)
│  └─用户选择组件
│  └─报表组件封装
│  └─字典组件
│  └─下拉多选组件
│  └─选人组件
│  └─选部门组件
│  └─通过部门选人组件
│  └─封装曲线、柱状图、饼状图、折线图等等报表的组件(经过封装,使用简单)
│  └─在线code编辑器
│  └─上传文件组件
│  └─树列表组件
│  └─表单禁用组件
│  └─等等
│─更多页面模板
│  └─Mock示例(子菜单很多)
│  └─页面&导航(子菜单很多)
│  └─组件&功能(子菜单很多)
├─高级功能
│  ├─支持微前端
│  ├─提供CAS单点登录
│  ├─集成Websocket消息通知机制
│  ├─支持第三方登录(QQ、钉钉、微信等)
│  ├─系统编码规则
├─Online在线开发(低代码)
│  ├─Online在线表单 - 功能已开放
│  ├─Online代码生成器 - 功能已开放
│  ├─Online在线报表 - 功能已开放
│  ├─Online在线图表(暂未开源)
│  ├─多数据源管理
│─流程模块功能 (暂未开源)
│  ├─流程设计器
│  ├─表单设计器
│  ├─大屏设计器
│  ├─门户设计/仪表盘设计器
│  └─我的任务
│  └─历史流程
│  └─历史流程
│  └─流程实例管理
│  └─流程监听管理
│  └─流程表达式
│  └─我发起的流程
│  └─我的抄送
│  └─流程委派、抄送、跳转
│  └─OA办公组件
└─其他模块 
   └─更多功能开发中

JeecgBoot 前端Vue3文档

「企业级低代码平台」前端开发文档,采用 Vue3.0+TypeScript+Vite+Ant-Design-Vue等最新技术栈,二次封装各种UI组件、utils、hooks、动态菜单、权限校验、按钮级别权限控制等功能。

JeecgBoot 后端开发文档

「企业级低代码平台」后端开发文档,采用SpringBoot 2.x,SpringCloud,Mybatis,Shiro,JWT等微服务架构。强大的代码生成器让前后端代码一键生成,无需写任何代码!支持SAAS应用。

AutoPoi技术文档

AutoPOI 功能如同名字auto,追求的就是自动化,让一个没接触过poi的人员,可以傻瓜化的快速实现Excel导入导出、Word模板导出、可以仅仅5行代码就可以完成Excel的导入导出。

JimuReport 积木报表文档

JimuReport 积木报表,顾名思义像搭建积木一样设计报表!涵盖大屏设计器、表单打印设计器、报表设计器、图表设计器等,此产品更多侧重数据处理,数据分组、多表头、主子表、单据打印排版等。

仪表盘设计器文档

一款免费数据可视化分析工具,支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表和门户设计,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。

MiniDao文档

一款轻量级JAVA持久层框架,采用 SpringJdbc + freemarker 实现,具备Mybatis一样的SQL分离和逻辑标签能力。

参见:

JeecgBoot 文档中心

登录演示平台 - JeecgBoot

ChatGPT AI助手 - JeecgBoot 文档中心

JeecgBoot低代码开发—Vue3版前端入门教程_哔哩哔哩_bilibili

Online代码生成 - JeecgBoot 文档中心

开源低代码平台,JeecgBoot v3.7.0 里程碑版本发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/730158.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决数据丢失问题的MacOS 数据恢复方法

每个人都经历过 Mac 硬盘或 USB 驱动器、数码相机、SD/存储卡等数据丢失的情况。我们中的一些人可能认为已删除或格式化的数据将永远丢失&#xff0c;因此就此作罢。对于 macOS 用户来说&#xff0c;当文件被删除时&#xff0c;垃圾箱已被清空&#xff0c;他们可能不知道如何恢…

利用GD32F470的定时器实现频率和占空比测试

1&#xff09;main函数代码如下&#xff1a; #include "gd32f4xx.h" #include <stdio.h> #include "gd32f470i_eval.h" #include "systick.h"void TIM_PwmInit(void) {rcu_periph_clock_enable(RCU_GPIOA);/* PWM输出管脚为复用推挽模式 …

一次压测引发的数据库 CPU 飙升

作者&#xff1a;昀鹤 一次压测过程中&#xff0c;当数据库的 qps 和 tps 都正常时&#xff0c;如果 cpu 利用率异常的高&#xff0c;应该如何排查&#xff1f;希望通过这篇文章&#xff0c;给你一些启发... 一、业务背景 业务需要控制频道内兑换现金的数量&#xff0c;于是在…

肆拾玖坊三级众筹模式玩法揭秘,白酒体验馆运作模式

发展至今&#xff0c;肆拾玖坊已积累了数百万忠实用户&#xff0c;拥有100多家分销商、5000多个新零售终端&#xff0c;覆盖全国34个省级行政区域、200余地市、1500个县区。成为中国创业界和酒行业的“现象级”企业。 今天&#xff0c;我们就来深入解析肆拾玖坊的营销模式&…

智能猫砂盆效果这么惊艳吗?绝对不踩雷的智能猫砂盆合集来啦

身为一个铲屎官&#xff0c;我深受“天天铲屎”的困扰。想要片刻放松都不行&#xff0c;因为猫砂盆一旦堆积屎尿&#xff0c;尤其在夏天&#xff0c;会迅速发臭&#xff0c;滋生细菌。对猫而言&#xff0c;不清理猫砂盆会让它们感到不适&#xff0c;可能引发疾病或拒绝使用猫砂…

C#唯一进程的处理Winform/WPF

C#唯一进程的处理 1.使用进程&#xff08;Process&#xff09;判断winformWPF执行效果&#xff1a; 2.使用互斥体&#xff08;Metux&#xff09;实现winformWPF实现效果&#xff1a; 在C#客户端&#xff08;Winform/WPF&#xff09;开发过程中&#xff0c;有的情况需要确保程序…

ubuntu22.04安装onlyoffice社区版

安装unbuntu22.04 https://blog.csdn.net/qq_36437991/article/details/135915360 安装onlyoffice sudo apt-get update sudo apt-get upgradepostgresql sudo apt-get install postgresql创建用户和数据库 sudo -i -u postgres psql -c "CREATE USER onlyoffice WIT…

ERP系统品牌大比拼:哪款产品更适合您的企业?

ERP集成了企业的销售、采购、生产、财务等各个环节&#xff0c;实现了资源的优化配置和信息的实时共享。然而&#xff0c;面对市场上琳琅满目的ERP系统产品&#xff0c;许多企业却陷入了选择的困境。 “哪款ERP系统更适合我的企业呢&#xff1f;”这或许是每一位企业决策者心中…

【STM32】SysTick系统滴答定时器

1.SysTick简介 CM4内核的处理和CM3一样&#xff0c;内部都包含了一个SysTick定时器&#xff0c;SysTick 是一个24 位的倒计数定时器&#xff0c;当计到0 时 &#xff0c;将 从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除&#xf…

免费ai写作?这三款软件是你的好帮手!

在信息爆炸的今天&#xff0c;自媒体已成为越来越多人展现自我、分享知识的平台。然而&#xff0c;对于许多自媒体创作者来说&#xff0c;写作过程中的灵感枯竭、文笔不畅等问题常常困扰着他们。幸运的是&#xff0c;随着人工智能技术的飞速发展&#xff0c;免费AI写作软件应运…

MyBatisPlus基础学习

一、简介 二、集成MP 三、入门HelloWorld 四、条件构造器EntityWrapper 五、ActiveRecord(活动记录 ) 六、代码生成器 七、插件扩展 八、自定义全局操作 九、公共字段自动填充 十、Oracle主键Sequence 十一、Idea快速开发插件 十二、mybatis-plus实践及架构原理

一文带你全面详细了解安全运维

一、安全运维-网络 1、IP地址相关 IP地址属于网络层地址&#xff0c;用于标识网络中的节点设备。 IP地址由32bit构成&#xff0c;每8bit一组&#xff0c;共占用4个字节。 IP地址由两部分组成&#xff0c;网络位和主机位。 IP地址分类&#xff1a; 类别网络位子网掩码私有地…

【OceanBase诊断调优】 —— DDL时报磁盘不足问题排查

1. 背景 由于在4.x的部分版本中&#xff0c;我们对于一些ddl操作还存在磁盘空间放大问题&#xff0c;本文主要介绍了这一类问题的排查。 2. 问题排查 2.1 整体排查链路 2.2 问题现象 DDL过程中报磁盘空间不足&#xff0c;需要确认是否符合预期&#xff0c;如果是符合预期&a…

告别数据孤岛,Xinstall助力App广告投放实现全渠道归因!

在移动互联网时代&#xff0c;App的推广和运营已成为企业不可或缺的一部分。然而&#xff0c;面对五花八门的广告渠道和繁杂多样的投放方式&#xff0c;如何有效追踪广告和渠道效果&#xff0c;如何甄别和选择流量渠道&#xff0c;成为了众多App开发商和运营者头疼的问题。幸运…

Qt制作程序启动界面类QSplashScreen实例测试详解

目录 一、QSplashScreen的概述 二、QSplashScreen静态图片加载 1、主程序实现 2、mainwindow.h实现 3、mainwindows.cpp实现 三、QSplashScreen动态图片加载 1、主程序实现 2、mainwindow.h实现 3、mainwindows.cpp实现 一、QSplashScreen的概述 QSplashScreen&#x…

LabVIEW电磁超声热态金属在线缺陷检测系统

LabVIEW软件开发的电磁超声热态金属在线缺陷检测系统针对极端高温环境下的金属材料&#xff0c;进行实时、无损的缺陷检测&#xff0c;具有高精度和高可靠性&#xff0c;能够显著提高材料质量控制的效率和准确性。 项目背景 随着工业技术的发展&#xff0c;高温环境下的金属材…

SQL Server入门-SSMS简单使用(2008R2版)-1

环境&#xff1a; win10&#xff0c;SQL Server 2008 R2 参考&#xff1a; SQL Server 新建数据库 - 菜鸟教程 https://www.cainiaoya.com/sqlserver/sql-server-create-db.html 第 2 课&#xff1a;编写 Transact-SQL | Microsoft Learn https://learn.microsoft.com/zh-cn/…

day01-anaconda的安装

Anaconda的安装 参考地址&#xff1a; http://t.csdnimg.cn/mUmSp 安装完毕&#xff0c;可以卸载电脑中的其他python版本&#xff0c;在控制面板中进行卸载。 在命令行指令中输入 pythonPython 3.8.3 (default, Jul 2 2020, 17:30:36) [MSC v.1916 64 bit (AMD64)] :: An…

DSP应用市场的大蛋糕,国产厂商能吃下多少?

DSP是数字信号处理器&#xff08;Digital Signal Processor&#xff09;的简称&#xff0c;是一种专门用于高速数学运算的微处理器。DSP能够快速且准确地处理数字信号&#xff0c;同时具备可编程和低功耗等特点&#xff0c;如今在各个领域发挥着越来越重要的作用。 &#xff08…

【Spine学习11】之 战士攻击动作 思路总结(手动调整贝塞尔曲线实现前快后慢)

拿到一份psd文件先观察检查一下图片顺序有没有问题&#xff0c; 重点看一下人物的腿部分层&#xff0c;&#xff08;如果是大小腿分开画的就网格可打可不打&#xff0c;如果是连在一起画的&#xff0c;那必须打网格&#xff09; 拿着剑的时候剑和手的层级有没有错位&#xff0c…