# multi_tenant **Repository Path**: xhyym/multi_tenant ## Basic Information - **Project Name**: multi_tenant - **Description**: 一个从生产环境抽离出的多租户多数据源的模拟demo项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-19 - **Last Updated**: 2025-10-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 该项目是一个基于多租户架构的数据源管理与订单业务实现的 Spring Boot 应用程序,主要分为两个模块:`business-datasource` 和 `business-order`。以下为项目简要说明和使用指南: --- ## 项目结构 - **business-datasource** 提供多租户数据源的动态配置和管理功能,支持按租户动态切换数据源。 - **business-order** 订单业务模块,演示如何在多租户环境下操作订单数据。 --- ## 功能特性 - 多租户数据源动态切换 - 自动加载租户数据源配置 - 基于 MyBatis Plus 的数据库操作 - 订单管理业务逻辑实现 --- ## 快速开始 ### 环境要求 - Java 8 或以上版本 - Maven 3.x - MySQL 数据库(或其他支持的数据库) - Git ### 构建与运行 1. **克隆项目** ```bash git clone https://gitee.com/xhyym/multi_tenant.git cd multi_tenant ``` 2. **构建项目** ```bash mvn clean install ``` 3. **启动订单服务** ```bash cd business-order mvn spring-boot:run ``` 4. **运行测试** ```bash mvn test ``` --- ## 配置说明 - 数据源配置位于 `business-datasource` 模块的 `application.yml` 中。 - 多租户默认数据源配置通过 `TenantConfigurationProperties` 类加载。 - 支持通过 `@TenantContextHolder` 设置当前线程的租户上下文。 --- ## 核心组件说明 - `TenantDynamicDataSource`:继承自 Spring 的 `AbstractRoutingDataSource`,实现动态数据源切换。 - `InitTenantDataSource`:初始化租户数据源,定时同步租户与数据库配置。 - `TenantContextHolder`:线程上下文工具类,用于保存当前租户 ID 和数据源标识。 - `OrderApplication`:订单服务启动类,禁用默认的 Spring 数据源自动配置。 --- ## 数据库结构 - `server` 表:存储数据库连接信息 - `tenant` 表:租户信息,关联 `server` 表 - `t_order` 表:订单信息,包含租户 ID 字段 --- ## 使用示例 在订单业务中使用多租户数据源: ```java TenantContextHolder.setTenantId(tenantId); // 设置当前租户 ID try { List orders = orderMapper.selectList(null); // 处理订单逻辑 } finally { TenantContextHolder.clear(); // 清除线程上下文 } ``` --- ## 贡献指南 欢迎提交 Pull Request,请确保代码风格与项目保持一致,并添加必要的单元测试。 --- ## 许可证 本项目采用 MIT 许可证,请参见 [LICENSE](LICENSE) 文件。