datai/docs/sql/template.md

209 lines
4.4 KiB
Markdown
Raw Normal View History

feat: 实现动态数据源延迟加载功能 (2026-01-21-001) ## 功能概述 - 实现动态数据源的延迟加载机制,支持应用启动时只加载主库,从库按需动态加载和切换 - 从库配置存储在主库中,支持运行时灵活切换从库库名 - 使用现有的 @DataSource 注解进行数据源切换,业务代码无需修改 ## 新增功能 - 动态数据源管理接口 IDynamicDataSourceManager - 动态数据源服务接口 IDynamicDataSourceService - 动态数据源服务实现 DynamicDataSourceServiceImpl - 数据源管理控制器 DatasourceController - 数据源配置表 sys_datasource_config ## 新增文档 - 需求文档: docs/requirements/2026-01-21-001-动态数据源延迟加载.md - 设计文档: docs/design/2026-01-21-001-动态数据源延迟加载设计.md - 决策记录: docs/decisions/2026-01-21-001-ADR-动态数据源延迟加载.md - SQL 脚本: docs/sql/2026-01-21-001-sys_datasource_config.sql - 提示词: docs/prompts/2026-01-21-001-动态数据源延迟加载代码生成提示词.md - 会话记录: docs/sessions/2026-01-21-001-session.md - 变更日志: docs/changelog/2026-01-21-001-changelog.md - 复盘文档: docs/retros/2026-01-21-001-retro.md - API 文档: docs/api-docs/2026-01-21-001-api.md - 根目录变更日志: CHANGELOG.md ## 修改功能 - 扩展 DataSourceManager 类,添加动态数据源管理方法 - 扩展 SysDatasourceConfigMapper 接口,添加 selectSysDatasourceConfigByDsName 方法 - 更新项目索引和 Authentication.canvas ## 修复问题 - 修复循环依赖问题:创建 IDynamicDataSourceManager 接口解决 datai-system 和 datai-framework 互相依赖 - 修复导入错误:删除 DynamicDataSourceServiceImpl 中未使用的导入 - 修复异常处理:将 setFilters() 调用移到 try-catch 块内 ## API 接口 - POST /system/datasource/loadSlave - 加载从库数据源 - POST /system/datasource/switchSlave/{dbName} - 切换从库库名 - GET /system/datasource/getSlaveConfig - 获取从库配置 - POST /system/datasource/switch/{dsName} - 切换数据源 - DELETE /system/datasource/{dsName} - 移除数据源
2026-01-21 18:24:24 +08:00
# SQL 文档模板
## 元数据
- 需求编号:
- 创建时间YYYY-MM-DD
- 创建人:
- 版本1.0.0
- 文档类型:数据库设计文档/SQL查询文档/存储过程文档/数据流程文档
## 数据库基本信息
- **数据库系统**MySQL/PostgreSQL/Oracle/其他
- **数据库名称**
- **版本**
- **环境**:开发/测试/生产
## 文档概述
- **文档目标**
- **适用范围**
- **使用对象**
## 数据库结构
### 数据库关系图
```
[数据库表关系的可视化表示]
```
### 表结构
#### 表 1[表名]
- **描述**
- **表结构**
| 字段名 | 数据类型 | 约束 | 默认值 | 描述 |
| ------ | ------ | ---- | ------ | ---- |
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | - | 主键 |
| name | VARCHAR(50) | NOT NULL | - | 名称 |
| create_time | DATETIME | NOT NULL | CURRENT_TIMESTAMP | 创建时间 |
| update_time | DATETIME | NOT NULL | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
- **索引**
| 索引名 | 类型 | 字段 | 描述 |
| ------ | ---- | ---- | ---- |
| idx_name | INDEX | name | 名称索引 |
- **备注**
#### 表 2[表名]
- **描述**
- **表结构**
| 字段名 | 数据类型 | 约束 | 默认值 | 描述 |
| ------ | ------ | ---- | ------ | ---- |
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | - | 主键 |
| foreign_id | BIGINT | NOT NULL, FOREIGN KEY REFERENCES table1(id) | - | 外键 |
| value | VARCHAR(100) | NOT NULL | - | 值 |
- **索引**
| 索引名 | 类型 | 字段 | 描述 |
| ------ | ---- | ---- | ---- |
| idx_foreign_id | INDEX | foreign_id | 外键索引 |
- **备注**
## SQL 代码
### 查询语句
#### 查询 1[查询名称]
- **功能描述**
- **SQL 语句**
```sql
-- 查询1描述
SELECT t1.id, t1.name, t2.value
FROM table1 t1
JOIN table2 t2 ON t1.id = t2.foreign_id
WHERE t1.name LIKE '%%' AND t2.value IS NOT NULL
ORDER BY t1.create_time DESC;
```
- **使用场景**
- **性能优化**
#### 查询 2[查询名称]
- **功能描述**
- **SQL 语句**
```sql
-- 查询2描述
```
- **使用场景**
- **性能优化**
### 存储过程
#### 存储过程 1[存储过程名称]
- **功能描述**
- **SQL 代码**
```sql
-- 存储过程1描述
DELIMITER //
CREATE PROCEDURE procedure_name(IN param1 INT, OUT result INT)
BEGIN
-- 存储过程逻辑
SELECT COUNT(*) INTO result FROM table1 WHERE id > param1;
END //
DELIMITER ;
```
- **参数说明**
| 参数名 | 类型 | 方向 | 描述 |
| ------ | ---- | ---- | ---- |
| param1 | INT | IN | 输入参数 |
| result | INT | OUT | 输出参数 |
- **调用示例**
```sql
CALL procedure_name(100, @result);
SELECT @result;
```
### 触发器
#### 触发器 1[触发器名称]
- **功能描述**
- **SQL 代码**
```sql
-- 触发器1描述
DELIMITER //
CREATE TRIGGER trigger_name
AFTER INSERT ON table1
FOR EACH ROW
BEGIN
-- 触发器逻辑
INSERT INTO table2(foreign_id, value) VALUES(NEW.id, 'default_value');
END //
DELIMITER ;
```
- **触发条件**
- **执行逻辑**
### 视图
#### 视图 1[视图名称]
- **功能描述**
- **SQL 代码**
```sql
-- 视图1描述
CREATE VIEW view_name AS
SELECT t1.id, t1.name, t2.value
FROM table1 t1
JOIN table2 t2 ON t1.id = t2.foreign_id;
```
- **使用场景**
## 使用示例
### 基本查询示例
```sql
-- 基本查询示例
SELECT * FROM table1 WHERE name = 'example';
```
### 复杂查询示例
```sql
-- 复杂查询示例
```
### 存储过程调用示例
```sql
-- 存储过程调用示例
```
## 优化建议
### 索引优化
- 建议1
- 建议2
### 查询优化
- 建议1
- 建议2
### 性能监控
- 监控指标:
- 监控工具:
## 维护指南
### 备份策略
- 备份频率:
- 备份方式:
- 备份存储位置:
### 恢复流程
- 恢复步骤:
- 验证方法:
### 更新流程
- 更新步骤:
- 测试方法:
- 回滚方案:
### 常见问题
| 问题 | 解决方案 |
| ---- | ------ |
| 问题1 | 解决方案1 |
| 问题2 | 解决方案2 |
## 变更历史
| 版本 | 日期 | 变更内容 | 变更人 |
| ---- | ---- | ------ | ------ |
| 1.0.0 | YYYY-MM-DD | 初始版本 | |
| 1.1.0 | YYYY-MM-DD | 添加新表 | |
## 相关文档
- [需求文档](../requirements/YYYY-MM-DD-00X-需求名.md)
- [设计文档](../design/YYYY-MM-DD-00X-设计名.md)