JeeLowCode技术架构与数据库兼容性
JeeLowCode是一款基于Spring Boot和Vue.js的企业级低代码开发框架,通过模块化设计和分层架构实现高扩展性。文章将从技术栈、多数据库兼容性、核心模块解析及系统架构四个方面,详细分析其支持MySQL/Oracle/PostgreSQL/达梦等数据库的能力,以及jeelowcode-plus/tenant等核心模块的设计原理。
项目技术栈与架构设计
JeeLowCode 是一款基于 Spring Boot 和 Vue.js 的企业级低代码开发框架,旨在通过高度模块化和组件化的设计,为开发者提供快速构建企业级应用的解决方案。以下将从技术栈和架构设计两个方面详细介绍其核心特性。
技术栈
JeeLowCode 的技术栈涵盖了前后端开发的全流程,具体如下:
后端技术栈
-
核心框架:
- Spring Boot 2.7.18:作为基础框架,提供了快速启动和自动配置的能力。
- Spring Security:用于认证和授权管理,支持多租户场景。
- MyBatis-Plus:增强的 ORM 框架,简化数据库操作。
-
数据库支持:
- MySQL:默认支持的关系型数据库。
- Oracle 11g:兼容企业级数据库需求。
- PostgreSQL:支持开源数据库。
- 达梦:国产数据库适配。
-
中间件与工具:
- Redis:用于缓存和分布式锁。
- Flowable:工作流引擎,支持业务流程管理。
- RabbitMQ:消息队列,用于异步任务处理。
- EasyExcel:Excel 导入导出工具。
-
其他组件:
- Lombok:简化 Java 代码开发。
- Swagger:API 文档生成工具。
- Hutool:工具类库,提供常用功能封装。
前端技术栈
-
核心框架:
- Vue 3.2:响应式前端框架。
- Element Plus:UI 组件库,提供丰富的界面组件。
-
工具与插件:
- Axios:HTTP 请求库。
- Vue Router:路由管理。
- Pinia:状态管理库。
架构设计
JeeLowCode 采用分层架构设计,确保代码的高内聚和低耦合。以下是其核心架构模块:
1. 模块化设计
项目通过 Maven 多模块管理,主要模块包括:
- jeelowcode-admin:启动模块,负责系统入口和全局配置。
- jeelowcode-framework:功能模块,包含 Excel 导出、异常处理、工具类等。
- jeelowcode-module:业务模块,支持自定义业务逻辑扩展。
- yudao-framework:芋道核心模块,提供基础功能支持。
2. 分层架构
-
表现层(Controller):
- 负责接收 HTTP 请求,调用服务层处理业务逻辑。
- 使用
@RestController注解定义 RESTful API。
-
服务层(Service):
- 实现核心业务逻辑。
- 支持事务管理(
@Transactional)。
-
数据访问层(Mapper):
- 通过 MyBatis-Plus 操作数据库。
- 提供通用的 CRUD 接口。
-
工具层(Utils):
- 封装常用工具类,如字符串处理、日期转换等。
3. 多租户支持
JeeLowCode 通过 JeeLowCodeTenantUtils 和 JeeLowCodeTenantAspect 实现多租户数据隔离。核心功能包括:
- 租户 ID 注入:在 SQL 中自动添加租户条件。
- 忽略表配置:支持忽略不需要租户隔离的表。
4. 低代码核心功能
-
在线表构建:
- 通过图形界面快速创建数据表,支持字段类型、默认值等配置。
- 自动生成增删改查接口。
-
动态表单设计:
- 提供丰富的表单控件,支持拖拽布局。
- 支持表单数据校验和联动逻辑。
-
统计报表:
- 配置 SQL 语句生成柱状图、折线图等可视化报表。
- 支持多表关联查询。
5. 扩展性设计
-
插件机制:
- 通过
@JeelowCodeValidate和@JeelowCodeCache注解支持功能扩展。 - 支持自定义拦截器和切面。
- 通过
-
消息队列:
- 使用 RabbitMQ 实现异步任务处理,如邮件发送、短信通知等。
架构图
总结
JeeLowCode 通过模块化设计和分层架构,实现了高扩展性和易维护性。其技术栈覆盖了企业级应用开发的各个环节,同时通过低代码功能大幅提升了开发效率。多租户支持和插件机制进一步增强了其适用性,使其成为企业数字化转型的理想选择。
多数据库兼容性实现
JeeLowCode作为一个低代码开发平台,其核心目标之一是支持多数据库兼容性,以满足不同企业的技术栈需求。通过分析项目结构,可以发现JeeLowCode在doc/sql目录下提供了针对MySQL、PostgreSQL、Oracle和达梦数据库(DM)的SQL脚本和说明文件,充分体现了其对多数据库的支持能力。
数据库支持列表
JeeLowCode目前支持的数据库包括:
- MySQL
- PostgreSQL
- Oracle
- 达梦数据库(DM)
每种数据库的SQL脚本和说明文件均存放在doc/sql目录下的对应子目录中,例如:
doc/sql/mysql:MySQL相关脚本doc/sql/pgsql:PostgreSQL相关脚本doc/sql/oracle:Oracle相关脚本doc/sql/dm:达梦数据库相关脚本
实现原理
JeeLowCode通过以下方式实现多数据库兼容性:
-
SQL方言适配
针对不同数据库的SQL语法差异,JeeLowCode提供了适配的SQL脚本。例如:- MySQL使用
AUTO_INCREMENT实现自增主键,而PostgreSQL使用SERIAL或IDENTITY。 - Oracle的日期函数与MySQL和PostgreSQL有所不同。
-- MySQL示例 CREATE TABLE user ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) ); -- PostgreSQL示例 CREATE TABLE user ( id SERIAL PRIMARY KEY, name VARCHAR(100) ); - MySQL使用
-
动态SQL生成
JeeLowCode在代码层面通过动态生成SQL语句来适配不同数据库。例如,使用MyBatis的动态SQL功能,根据数据库类型选择不同的SQL片段。<select id="getUser" resultType="User"> <if test="_databaseId == 'mysql'"> SELECT * FROM user LIMIT 1; </if> <if test="_databaseId == 'oracle'"> SELECT * FROM user WHERE ROWNUM = 1; </if> </select> -
数据库驱动配置
在项目的依赖管理文件(如pom.xml)中,JeeLowCode通过引入不同数据库的JDBC驱动来实现连接兼容性。<!-- MySQL驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> <!-- PostgreSQL驱动 --> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.2.24</version> </dependency>
数据库迁移支持
JeeLowCode还提供了数据库迁移脚本,例如在doc/sql/mysql/update目录下存放了从v1.0.0升级到v1.0.1的SQL脚本,确保数据库结构的平滑升级。
-- v1.0.0-v1.0.1.sql
ALTER TABLE user ADD COLUMN email VARCHAR(100);
流程图展示
以下是通过流程图展示的多数据库兼容性实现流程:
通过以上设计,JeeLowCode能够灵活适配多种数据库,满足企业级应用的需求。
核心模块解析:jeelowcode-plus与jeelowcode-tenant
JeeLowCode低代码平台的核心模块jeelowcode-plus和jeelowcode-tenant分别负责SQL封装和租户功能,为开发者提供了强大的数据库操作能力和多租户支持。以下是对这两个模块的详细解析。
jeelowcode-plus:SQL封装与数据库操作
jeelowcode-plus模块是JeeLowCode平台的核心组件之一,专注于SQL封装和数据库操作。它提供了一系列工具类和包装器,简化了数据库操作的复杂性,同时支持多种数据库类型(如MySQL、Oracle、PostgreSQL等)。
核心功能
-
SQL封装与动态构建
通过JeeLowCodeQueryWrapper、JeeLowCodeUpdateWrapper等包装器,开发者可以动态构建SQL语句,无需手动拼接字符串。例如:JeeLowCodeQueryWrapper<User> queryWrapper = new JeeLowCodeQueryWrapper<>(); queryWrapper.eq("username", "admin").orderByAsc("id"); List<User> users = userMapper.selectList(queryWrapper); -
多数据库支持
通过FlyweightDBFactory和AbstractDbTemplate抽象类,jeelowcode-plus支持多种数据库类型,开发者可以根据需求切换数据库驱动。 -
SQL工具类
SqlUtils:提供SQL字符串拼接和格式化功能。SqlInjectionUtils:防止SQL注入攻击。SqlScriptUtils:支持动态SQL脚本生成。
-
DDL操作
通过JeeLowCodeCreateTable、JeeLowCodeAlterTable等类,支持动态创建和修改表结构。
架构设计
jeelowcode-tenant:多租户支持
jeelowcode-tenant模块为JeeLowCode平台提供了多租户功能,支持数据隔离和租户管理。它基于yudao-spring-boot-starter-biz-tenant实现,并扩展了租户SQL解析和拦截功能。
核心功能
-
租户SQL解析
通过JeeLowCodeTenantParse类,动态解析SQL语句并注入租户条件。例如:// 原始SQL SELECT * FROM user; // 解析后SQL(假设租户ID为1) SELECT * FROM user WHERE tenant_id = 1; -
租户拦截器
JeeLowCodeTenantAspect拦截器自动为增删改查操作注入租户ID,确保数据隔离。 -
租户工具类
JeeLowCodeTenantUtils:提供租户ID的获取和设置功能。JeeLowCodeTenantIgnore:支持忽略特定表或URL的租户过滤。
架构设计
模块依赖关系
| 模块 | 依赖项 |
|---|---|
jeelowcode-plus | jeelowcode-utils, jeelowcode-tenant, jsqlparser |
jeelowcode-tenant | jeelowcode-utils, jsqlparser, yudao-spring-boot-starter-biz-tenant |
通过以上分析,可以看出jeelowcode-plus和jeelowcode-tenant模块在JeeLowCode平台中扮演了重要角色,分别解决了SQL操作和多租户支持的核心问题。
系统架构图与模块关系
JeeLowCode 是一个基于 Spring Boot 的低代码开发平台,其系统架构设计清晰,模块划分明确,能够高效支持企业级应用的快速开发。本节将详细介绍 JeeLowCode 的系统架构图及其模块之间的关系,帮助开发者更好地理解其设计理念和实现方式。
系统架构图
JeeLowCode 的系统架构采用分层设计,分为核心层、框架层、模块层和依赖层。以下是其架构的 Mermaid 流程图表示:
核心层
核心层是 JeeLowCode 的基础,提供了低代码开发的核心功能,包括代码生成、数据模型定义和基础工具类。其核心模块包括:
jeelowcode-core: 核心逻辑实现。jeelowcode-utils: 提供通用工具类。
框架层
框架层基于 Spring Boot 扩展,为模块层提供丰富的功能支持。主要模块包括:
yudao-spring-boot-starter-*: 一系列 Spring Boot Starter,如数据权限、字典管理、IP 控制等。jeelowcode-framework: 框架扩展模块,如 Excel 导出、异常处理等。
模块层
模块层是业务功能的实现层,分为 API 和业务模块。主要模块包括:
jeelowcode-module-api: 提供对外接口。jeelowcode-module-biz: 业务逻辑实现。
依赖层
依赖层管理项目的依赖关系,确保各模块能够协同工作。主要模块为:
jeelowcode-dependencies: 统一管理依赖版本。
模块关系
JeeLowCode 的模块之间通过依赖注入和接口调用实现交互。以下是模块关系的 Mermaid 类图表示:
核心层与框架层
核心层通过调用框架层的扩展功能,实现低代码开发的基础能力。例如,jeelowcode-core 会依赖 yudao-spring-boot-starter-mybatis 来实现数据库操作。
框架层与模块层
框架层为模块层提供功能支持。例如,yudao-spring-boot-starter-biz-dict 为 jeelowcode-module-biz 提供字典管理功能。
模块层与依赖层
模块层通过依赖层统一管理依赖版本,确保各模块的兼容性。例如,jeelowcode-module-api 和 jeelowcode-module-biz 均依赖 jeelowcode-dependencies。
代码示例
以下是一个简单的代码示例,展示模块之间的调用关系:
// 核心层调用框架层
public class CodeGenerator {
@Autowired
private MybatisStarter mybatisStarter;
public void generate() {
mybatisStarter.execute();
}
}
表格:模块功能说明
| 模块名称 | 功能描述 | 依赖关系 |
|---|---|---|
jeelowcode-core | 提供核心代码生成功能 | 依赖 jeelowcode-utils |
yudao-spring-boot-starter-mybatis | 提供 MyBatis 数据库操作支持 | 依赖 jeelowcode-dependencies |
jeelowcode-module-biz | 实现业务逻辑 | 依赖 jeelowcode-module-api |
通过以上内容,开发者可以清晰地了解 JeeLowCode 的系统架构及其模块之间的关系,为后续的开发工作奠定基础。
总结
JeeLowCode通过Spring Boot+Vue技术栈和模块化分层架构,实现了企业级低代码开发的高效性与扩展性。其多数据库兼容设计(MySQL/Oracle/PostgreSQL/达梦)和jeelowcode-plus/tenant核心模块的SQL封装/多租户支持,显著提升了复杂业务场景的适配能力。系统架构图清晰展示了核心层-框架层-模块层的协同关系,为快速构建企业应用提供了完整解决方案。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



