# flavor-admin **Repository Path**: openus/flavor-admin ## Basic Information - **Project Name**: flavor-admin - **Description**: 数据库管理 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-12 - **Last Updated**: 2026-04-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Flavor Admin - 数据库客户端后端服务 ## 简介 Flavor Admin 是 Flavor 数据库管理客户端的 Spring Boot 后端服务,提供统一的数据库连接管理、SQL 查询执行、数据导入导出和数据迁移等功能。 ## 技术栈 - **框架**: Spring Boot 3.2.5 - **Java 版本**: 17+ - **ORM**: MyBatis Plus 3.5.5 - **连接池**: HikariCP - **缓存**: Caffeine - **数据库**: H2 (默认开发)、MySQL、PostgreSQL、SQLServer、SQLite ## 支持的数据库 | 数据库 | 驱动 | 状态 | |--------|------|------| | MySQL | mysql-connector-j 8.3.0 | ✅ 支持 | | SQLServer | mssql-jdbc 12.8.1 | ✅ 支持 | | Redis | Lettuce 6.3.0 | ✅ 支持 | | ZooKeeper | Curator 5.5.0 | ✅ 支持 | ## 功能模块 ### 连接管理 - 多数据库类型连接配置管理 - 连接池管理(支持连接复用、空闲回收) - 连接健康检测 - 最近连接记录 ### SQL 查询执行 - SELECT 查询(支持分页) - DML 操作(INSERT、UPDATE、DELETE) - DDL 操作(CREATE、ALTER、DROP) - 批量 SQL 执行 - 查询历史记录 ### 数据查看与编辑 - 表结构查看(列、索引、外键、触发器) - 表数据分页查看 - 行数据编辑 - 数据筛选和排序 ### 数据导入导出 - 导出格式:CSV、JSON、SQL - 导入格式:CSV - 支持大文件分片导出 ### 数据迁移 - 同类型数据库迁移(MySQL ↔ MySQL、SQLServer ↔ SQLServer) - 表结构迁移 - 数据迁移(支持选择性表迁移) - 异步迁移任务 ### 查询管理 - 保存常用查询 - 查询分类管理 - 快速查询执行 ## 项目结构 ``` flavor-admin/ ├── src/main/java/com/flavor/admin/ │ ├── FlavorAdminApplication.java # 应用入口 │ ├── config/ # 配置类 │ │ └── HikariCPConfig.java # 连接池配置 │ ├── controller/ # 控制器 │ │ ├── ConnectionController.java # 连接管理 │ │ ├── QueryController.java # SQL 查询 │ │ ├── RedisController.java # Redis 操作 │ │ ├── ZooKeeperController.java # ZooKeeper 操作 │ │ ├── StructureController.java # 表结构 │ │ ├── ExportController.java # 数据导出 │ │ ├── ConnectionGroupController.java # 连接分组 │ │ ├── QueryHistoryController.java # 查询历史 │ │ ├── SavedQueryController.java # 保存查询 │ │ └── MigrationController.java # 数据迁移 │ ├── service/ # 服务层 │ │ ├── ConnectionService.java │ │ ├── QueryExecutionService.java │ │ ├── RedisService.java │ │ ├── ZooKeeperService.java │ │ └── MigrationService.java │ ├── core/ # 核心模块 │ │ ├── datasource/ # 数据源适配器 │ │ │ ├── DataSourceAdapter.java # 适配器接口 │ │ │ ├── mysql/MySQLAdapter.java │ │ │ ├── sqlserver/SQLServerAdapter.java │ │ │ ├── redis/RedisAdapter.java │ │ │ └── zookeeper/ZooKeeperAdapter.java │ │ └── pool/ # 连接池管理 │ │ └── ConnectionPoolManager.java │ ├── model/ # 实体类 │ ├── dto/ # 数据传输对象 │ ├── mapper/ # MyBatis Mapper │ └── common/ # 公共组件 ├── src/main/resources/ │ ├── application.properties # 应用配置 │ └── sql/ │ └── schema.sql # 数据库初始化脚本 └── pom.xml ``` ## 快速开始 ### 环境要求 - JDK 17+ - Maven 3.6+ ### 构建 ```bash # 开发环境打包(包含所有依赖) mvn clean package -DskipTests # 仅构建 jar mvn clean package -DskipTests -Dpackaging=jar ``` 打包后的文件位于 `target/flavor-admin.jar` ### 运行 ```bash # 默认配置运行(H2 数据库) java -jar target/flavor-admin.jar # 指定端口 java -jar target/flavor-admin.jar --server.port=18887 # 指定配置文件 java -jar target/flavor-admin.jar --spring.config.location=./application.properties ``` ### Docker 运行 ```bash docker run -p 18887:8080 \ -v ./data:/data \ flavor-admin:latest ``` ## 配置说明 ### 数据库配置(H2 默认) ```properties # H2 文件数据库(默认) spring.datasource.url=jdbc:h2:file:./data/flavor-admin;MODE=MySQL;CASE_INSENSITIVE_IDENTIFIERS=true;DB_CLOSE_DELAY=-1 spring.datasource.username=sa spring.datasource.password= spring.datasource.driver-class-name=org.h2.Driver # H2 控制台(开发调试用) spring.h2.console.enabled=true spring.h2.console.path=/h2-console ``` ### 切换 MySQL ```properties spring.datasource.url=jdbc:mysql://localhost:3306/flavor-admin?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=your_password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` ### 其他配置 ```properties # 服务端口 server.port=18887 # 日志级别 logging.level.com.flavor.admin=INFO # 文件上传大小限制 spring.servlet.multipart.max-file-size=100MB spring.servlet.multipart.max-request-size=100MB ``` ## API 文档 ### 主要接口 | 接口 | 方法 | 说明 | |------|------|------| | `/v1/connection/list` | GET | 获取连接列表 | | `/v1/connection/create` | POST | 创建连接 | | `/v1/connection/activate` | POST | 激活连接 | | `/v1/connection/close` | POST | 关闭连接 | | `/v1/query/execute` | POST | 执行 SQL | | `/v1/query/select` | POST | 执行 SELECT | | `/v1/redis/keys` | POST | 获取 Redis keys | | `/v1/redis/get` | POST | 获取 Redis value | | `/v1/zk/nodes` | POST | 获取 ZooKeeper 节点 | | `/v1/export/csv` | POST | 导出 CSV | | `/v1/migration/execute` | POST | 执行数据迁移 | ## 数据库表结构 | 表名 | 说明 | |------|------| | t_connection_config | 连接配置表 | | t_query_history | 查询历史表 | | t_saved_query | 保存的查询表 | | t_recent_connection | 最近连接表 | ## 与前端配合 Flavor Admin 需要配合 Flavor 前端使用。前端默认连接地址:`http://localhost:18887` 修改前端 API 地址: ```env VITE_API_BASE_URL=http://localhost:18887 ``` ## 常见问题 ### 1. 连接池耗尽 检查是否有未关闭的数据库连接,确保每次使用后调用关闭接口。 ### 2. H2 数据库文件被锁定 确保只有一个实例在访问 H2 数据库,或使用 `DB_CLOSE_DELAY=-1` 参数。 ### 3. 跨域问题 已配置允许所有来源的 CORS 请求,如有需要可在配置文件中修改。