JeeLowCode技术架构与数据库兼容性

JeeLowCode技术架构与数据库兼容性

【免费下载链接】jeelowcode 👍 👍 👍 国内首个全开源的低代码开发平台 👍 👍 👍 。JeeLowCode低代码平台能够在线轻松驾驭99.99%编程挑战 【免费下载链接】jeelowcode 项目地址: https://gitcode.com/jeelowcode/jeelowcode

JeeLowCode是一款基于Spring Boot和Vue.js的企业级低代码开发框架,通过模块化设计和分层架构实现高扩展性。文章将从技术栈、多数据库兼容性、核心模块解析及系统架构四个方面,详细分析其支持MySQL/Oracle/PostgreSQL/达梦等数据库的能力,以及jeelowcode-plus/tenant等核心模块的设计原理。

项目技术栈与架构设计

JeeLowCode 是一款基于 Spring Boot 和 Vue.js 的企业级低代码开发框架,旨在通过高度模块化和组件化的设计,为开发者提供快速构建企业级应用的解决方案。以下将从技术栈和架构设计两个方面详细介绍其核心特性。

技术栈

JeeLowCode 的技术栈涵盖了前后端开发的全流程,具体如下:

后端技术栈
  1. 核心框架

    • Spring Boot 2.7.18:作为基础框架,提供了快速启动和自动配置的能力。
    • Spring Security:用于认证和授权管理,支持多租户场景。
    • MyBatis-Plus:增强的 ORM 框架,简化数据库操作。
  2. 数据库支持

    • MySQL:默认支持的关系型数据库。
    • Oracle 11g:兼容企业级数据库需求。
    • PostgreSQL:支持开源数据库。
    • 达梦:国产数据库适配。
  3. 中间件与工具

    • Redis:用于缓存和分布式锁。
    • Flowable:工作流引擎,支持业务流程管理。
    • RabbitMQ:消息队列,用于异步任务处理。
    • EasyExcel:Excel 导入导出工具。
  4. 其他组件

    • Lombok:简化 Java 代码开发。
    • Swagger:API 文档生成工具。
    • Hutool:工具类库,提供常用功能封装。
前端技术栈
  1. 核心框架

    • Vue 3.2:响应式前端框架。
    • Element Plus:UI 组件库,提供丰富的界面组件。
  2. 工具与插件

    • Axios:HTTP 请求库。
    • Vue Router:路由管理。
    • Pinia:状态管理库。
架构设计

JeeLowCode 采用分层架构设计,确保代码的高内聚和低耦合。以下是其核心架构模块:

1. 模块化设计

项目通过 Maven 多模块管理,主要模块包括:

  • jeelowcode-admin:启动模块,负责系统入口和全局配置。
  • jeelowcode-framework:功能模块,包含 Excel 导出、异常处理、工具类等。
  • jeelowcode-module:业务模块,支持自定义业务逻辑扩展。
  • yudao-framework:芋道核心模块,提供基础功能支持。
2. 分层架构
  1. 表现层(Controller)

    • 负责接收 HTTP 请求,调用服务层处理业务逻辑。
    • 使用 @RestController 注解定义 RESTful API。
  2. 服务层(Service)

    • 实现核心业务逻辑。
    • 支持事务管理(@Transactional)。
  3. 数据访问层(Mapper)

    • 通过 MyBatis-Plus 操作数据库。
    • 提供通用的 CRUD 接口。
  4. 工具层(Utils)

    • 封装常用工具类,如字符串处理、日期转换等。
3. 多租户支持

JeeLowCode 通过 JeeLowCodeTenantUtilsJeeLowCodeTenantAspect 实现多租户数据隔离。核心功能包括:

  • 租户 ID 注入:在 SQL 中自动添加租户条件。
  • 忽略表配置:支持忽略不需要租户隔离的表。
4. 低代码核心功能
  1. 在线表构建

    • 通过图形界面快速创建数据表,支持字段类型、默认值等配置。
    • 自动生成增删改查接口。
  2. 动态表单设计

    • 提供丰富的表单控件,支持拖拽布局。
    • 支持表单数据校验和联动逻辑。
  3. 统计报表

    • 配置 SQL 语句生成柱状图、折线图等可视化报表。
    • 支持多表关联查询。
5. 扩展性设计
  1. 插件机制

    • 通过 @JeelowCodeValidate@JeelowCodeCache 注解支持功能扩展。
    • 支持自定义拦截器和切面。
  2. 消息队列

    • 使用 RabbitMQ 实现异步任务处理,如邮件发送、短信通知等。

架构图

mermaid

总结

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通过以下方式实现多数据库兼容性:

  1. SQL方言适配
    针对不同数据库的SQL语法差异,JeeLowCode提供了适配的SQL脚本。例如:

    • MySQL使用AUTO_INCREMENT实现自增主键,而PostgreSQL使用SERIALIDENTITY
    • 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)
    );
    
  2. 动态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>
    
  3. 数据库驱动配置
    在项目的依赖管理文件(如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);

流程图展示

以下是通过流程图展示的多数据库兼容性实现流程:

mermaid

通过以上设计,JeeLowCode能够灵活适配多种数据库,满足企业级应用的需求。

核心模块解析:jeelowcode-plus与jeelowcode-tenant

JeeLowCode低代码平台的核心模块jeelowcode-plusjeelowcode-tenant分别负责SQL封装和租户功能,为开发者提供了强大的数据库操作能力和多租户支持。以下是对这两个模块的详细解析。


jeelowcode-plus:SQL封装与数据库操作

jeelowcode-plus模块是JeeLowCode平台的核心组件之一,专注于SQL封装和数据库操作。它提供了一系列工具类和包装器,简化了数据库操作的复杂性,同时支持多种数据库类型(如MySQL、Oracle、PostgreSQL等)。

核心功能
  1. SQL封装与动态构建
    通过JeeLowCodeQueryWrapperJeeLowCodeUpdateWrapper等包装器,开发者可以动态构建SQL语句,无需手动拼接字符串。例如:

    JeeLowCodeQueryWrapper<User> queryWrapper = new JeeLowCodeQueryWrapper<>();
    queryWrapper.eq("username", "admin").orderByAsc("id");
    List<User> users = userMapper.selectList(queryWrapper);
    
  2. 多数据库支持
    通过FlyweightDBFactoryAbstractDbTemplate抽象类,jeelowcode-plus支持多种数据库类型,开发者可以根据需求切换数据库驱动。

  3. SQL工具类

    • SqlUtils:提供SQL字符串拼接和格式化功能。
    • SqlInjectionUtils:防止SQL注入攻击。
    • SqlScriptUtils:支持动态SQL脚本生成。
  4. DDL操作
    通过JeeLowCodeCreateTableJeeLowCodeAlterTable等类,支持动态创建和修改表结构。

架构设计

mermaid


jeelowcode-tenant:多租户支持

jeelowcode-tenant模块为JeeLowCode平台提供了多租户功能,支持数据隔离和租户管理。它基于yudao-spring-boot-starter-biz-tenant实现,并扩展了租户SQL解析和拦截功能。

核心功能
  1. 租户SQL解析
    通过JeeLowCodeTenantParse类,动态解析SQL语句并注入租户条件。例如:

    // 原始SQL
    SELECT * FROM user;
    // 解析后SQL(假设租户ID为1)
    SELECT * FROM user WHERE tenant_id = 1;
    
  2. 租户拦截器
    JeeLowCodeTenantAspect拦截器自动为增删改查操作注入租户ID,确保数据隔离。

  3. 租户工具类

    • JeeLowCodeTenantUtils:提供租户ID的获取和设置功能。
    • JeeLowCodeTenantIgnore:支持忽略特定表或URL的租户过滤。
架构设计

mermaid


模块依赖关系

模块依赖项
jeelowcode-plusjeelowcode-utils, jeelowcode-tenant, jsqlparser
jeelowcode-tenantjeelowcode-utils, jsqlparser, yudao-spring-boot-starter-biz-tenant

通过以上分析,可以看出jeelowcode-plusjeelowcode-tenant模块在JeeLowCode平台中扮演了重要角色,分别解决了SQL操作和多租户支持的核心问题。

系统架构图与模块关系

JeeLowCode 是一个基于 Spring Boot 的低代码开发平台,其系统架构设计清晰,模块划分明确,能够高效支持企业级应用的快速开发。本节将详细介绍 JeeLowCode 的系统架构图及其模块之间的关系,帮助开发者更好地理解其设计理念和实现方式。

系统架构图

JeeLowCode 的系统架构采用分层设计,分为核心层、框架层、模块层和依赖层。以下是其架构的 Mermaid 流程图表示:

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 类图表示:

mermaid

核心层与框架层

核心层通过调用框架层的扩展功能,实现低代码开发的基础能力。例如,jeelowcode-core 会依赖 yudao-spring-boot-starter-mybatis 来实现数据库操作。

框架层与模块层

框架层为模块层提供功能支持。例如,yudao-spring-boot-starter-biz-dictjeelowcode-module-biz 提供字典管理功能。

模块层与依赖层

模块层通过依赖层统一管理依赖版本,确保各模块的兼容性。例如,jeelowcode-module-apijeelowcode-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封装/多租户支持,显著提升了复杂业务场景的适配能力。系统架构图清晰展示了核心层-框架层-模块层的协同关系,为快速构建企业应用提供了完整解决方案。

【免费下载链接】jeelowcode 👍 👍 👍 国内首个全开源的低代码开发平台 👍 👍 👍 。JeeLowCode低代码平台能够在线轻松驾驭99.99%编程挑战 【免费下载链接】jeelowcode 项目地址: https://gitcode.com/jeelowcode/jeelowcode

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值