# 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等第三方框架的开源协议。