# spring-boot-mysql-complete-project
**Repository Path**: skchen1314/spring-boot-mysql-complete-project
## Basic Information
- **Project Name**: spring-boot-mysql-complete-project
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-09-04
- **Last Updated**: 2025-09-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Spring Boot MySQL 连接测试脚手架
## 项目简介
本项目是基于 **Spring Boot 2.7.18** 和 **Java 8** 开发的轻量级数据库连接测试工具,专注于验证与 MySQL 数据库的连接可用性。通过集成 Druid 连接池实现高效连接管理,提供 HTTP 接口和单元测试两种验证方式,帮助开发者快速排查数据库连接配置问题。
## 1. 技术架构
### 1.1 技术栈选型
| 技术/框架 | 版本 | 用途说明 |
|--------------------|---------------|----------------|
| Spring Boot | 2.7.18 | 快速构建Spring应用,简化配置与依赖管理 |
| Java | 8 | 项目开发语言,兼容主流生产环境JDK版本 |
| MySQL JDBC Driver | 8.0.32 | 实现Java程序与MySQL数据库的通信 |
| Druid 连接池 | 1.2.15 | 高性能数据库连接池,提供连接监控、限流等功能 |
| Spring JDBC | 内置 | 简化JDBC操作,提供JdbcTemplate工具类 |
| JUnit 5 | 内置 | 单元测试框架,验证数据库连接与功能可用性 |
## 1.2 架构设计
项目采用极简分层设计,聚焦"连接测试"核心目标:
| 层级 | 功能描述 |
|------|----------|
| **测试层**(单元测试 + HTTP接口测试) | - 单元测试:验证数据源、JdbcTemplate
- HTTP接口:提供浏览器/工具可访问的测试接口 |
| **数据访问层**(Spring JDBC + Druid) | - DruidDataSource:管理数据库连接池
- JdbcTemplate:执行SQL查询与操作 |
| **配置层**(application.yml + 配置类) | - 数据库连接参数(URL、账号、密码等)
- Druid连接池参数(初始连接数、最大连接数等) |
## 2. 项目代码结构
```
src/
├── main/
│ ├── java/
│ │ └── com/
│ │ └── example/
│ │ └── mysqlconnectiontest/
│ │ ├── MysqlConnectionTestApplication.java # 项目启动类(入口)
│ │ ├── config/
│ │ │ └── DataSourceConfig.java # Druid数据源配置类
│ │ └── controller/
│ │ └── TestController.java # HTTP测试接口
│ └── resources/
│ └── application.yml # 核心配置文件
└── test/
└── java/
└── com/
└── example/
└── mysqlconnectiontest/
└── MysqlConnectionTestApplicationTests.java # 单元测试类
pom.xml # Maven依赖管理文件
```
### 核心代码说明
| 文件路径 | 核心功能 | 关键逻辑 |
|----------|----------|----------|
| `application.yml` | 配置中心 | 1. MySQL连接参数(包含解决公钥检索问题的配置)
2. Druid连接池参数配置
3. 日志级别配置 |
| `DataSourceConfig.java` | 数据源配置 | 1. 配置Druid数据源
2. 配置JdbcTemplate用于数据库操作 |
| `TestController.java` | HTTP测试接口 | 1. `/test-connection`:测试数据库连接是否正常
2. `/list-tables`:查询当前数据库的所有表名 |
| `MysqlConnectionTestApplicationTests.java` | 单元测试 | 1. 验证数据源初始化和连接获取
2. 验证JdbcTemplate执行SQL的能力 |
## 3. 使用须知
### 3.1 前置条件
1. **环境依赖**:
- JDK 8(必须,项目基于Java 8开发)
- Maven 3.6+(用于构建项目、下载依赖)
- MySQL 5.7+/8.0+(确保数据库服务正常运行)
2. **数据库准备**:
- 创建数据库 `tt_copy`(与配置文件中数据库名一致)
- 确保MySQL服务端口为3306(端口不同需修改配置文件)
- 数据库账号密码与配置文件中一致(默认:TT/hc12345678)
### 3.2 项目启动与测试
#### 方式1:运行启动类(本地开发)
1. 克隆/下载项目代码到本地
2. 用IDE打开项目,等待Maven依赖下载完成
3. 运行 `MysqlConnectionTestApplication.java` 启动类
4. 应用启动成功后测试:
- 访问 `http://localhost:8080/test-connection` 测试连接
- 访问 `http://localhost:8080/list-tables` 查看数据库表信息
#### 方式2:运行单元测试
1. 打开单元测试类 `MysqlConnectionTestApplicationTests.java`
2. 执行测试方法验证:
- `testDataSource()`:验证数据源和连接获取
- `testJdbcTemplate()`:验证SQL执行能力
### 3.3 常见问题及解决方案
#### 问题1:Public Key Retrieval is not allowed
**解决方案**:配置文件中已包含 `allowPublicKeyRetrieval=true` 参数,解决MySQL 8.0+的认证问题。
#### 问题2:Access denied for user 'TT'@'localhost'
**解决方案**:
1. 确认数据库用户`TT`存在且密码正确
2. 执行以下SQL修改用户权限:
```sql
ALTER USER 'TT'@'localhost' IDENTIFIED WITH mysql_native_password BY 'hc12345678';
FLUSH PRIVILEGES;
```
#### 问题3:Unknown database 'tt_copy'
**解决方案**:登录MySQL,执行 `CREATE DATABASE IF NOT EXISTS tt_copy;` 创建数据库
#### 问题4:Could not connect to address=(host=127.0.0.1)(port=3306)
**解决方案**:
1. 检查MySQL服务是否启动
2. 确认端口号是否正确(默认3306)
3. 检查防火墙是否允许连接
## 4. 扩展建议
1. **添加连接监控**:配置Druid监控页面,访问`/druid`查看连接池状态
2. **多环境配置**:创建`application-dev.yml`、`application-prod.yml`区分环境
3. **日志优化**:调整日志级别,输出更详细的连接过程信息
4. **添加连接重试机制**:增强项目的容错能力
## 5. 许可证
本项目为开源测试工具,可自由用于学习、开发与测试场景,遵守Spring Boot、Druid等第三方框架的开源协议。