Druid 是阿里巴巴开源的**高性能数据库连接池**,在 Spring Boot 项目中主要用于优化数据库连接管理,并提供丰富的监控功能。结合你的代码场景(MyBatis + Spring Boot),以下是 Druid 的核心作用:
---
### **1. 核心作用**
| **功能** | **说明** | **对应你的代码场景** |
|-------------------------|--------------------------------------------------------------------------|------------------------------------------------------------------------------------|
| **连接池管理** | 复用数据库连接,避免频繁创建/销毁连接的开销,提升性能 | 你的 `BookDao` 执行 SQL 时,Druid 会管理连接池,减少数据库压力 |
| **SQL 监控与统计** | 记录所有 SQL 执行耗时、参数、结果集大小,帮助优化慢查询 | 可监控 `bookDao.getById(1)` 的执行时间,定位性能瓶颈 |
| **防御性功能** | 支持 SQL 防火墙、防止连接泄漏、防御 SQL 注入 | 保护你的 `@Select` SQL 语句免受攻击 |
| **扩展性** | 支持自定义过滤器、监控日志输出格式 | 可定制监控页面,观察 `BookDao` 接口的 SQL 执行情况 |
| **可视化监控** | 内置监控页面,实时查看连接池状态、慢 SQL、并发数等 | 通过浏览器访问 `/druid` 路径,直接查看 `tbl_book` 表相关 SQL 的执行统计 |
---
### **2. 对比默认连接池(如 HikariCP)**
Druid 的核心优势在于 **监控能力** 和 **防御功能**,而 Spring Boot 默认的 HikariCP 更轻量、性能更高。
- **选择 Druid 的场景**:
1. 需要详细监控 SQL 执行情况(如你的 `BookDao` 方法调用统计)。
2. 需要防止 SQL 注入或连接泄漏。
3. 需要统计慢 SQL 并优化(如 `@Select` 语句性能分析)。
---
### **3. 如何与你的代码整合?**
在你的 Spring Boot + MyBatis 项目中集成 Druid 只需两步:
#### **步骤1:添加依赖**
```xml
<!-- pom.xml -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.16</version>
</dependency>
```
#### **步骤2:配置数据源**
```yml
# application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/your_db?useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource # 指定使用 Druid
```
#### **步骤3:访问监控页面**
启动项目后访问 `http://localhost:8080/druid`,输入配置的账号密码,即可看到所有 SQL 监控数据(包括 `BookDao` 的调用情况)。
---
### **4. 注意代码中的两个关键修正**
根据你的代码截图,需要修正以下错误以确保功能正常:
1. **SQL 表名和占位符错误**:
```java
// 错误代码
@Select("select * from tbl_back where id = #(id)")
// 修正为
@Select("SELECT * FROM tbl_book WHERE id = #{id}")
```
2. **测试类括号错误**:
```java
// 错误代码
System.out.println(bookDao.getById(1);
// 修正为
System.out.println(bookDao.getById(1));
```
---
### **总结**
在你的项目中引入 Druid 后:
1. **性能提升**:通过连接池复用机制,优化 `BookDao` 的数据库操作效率。
2. **问题排查**:通过监控页面快速定位 `getById` 等方法的 SQL 性能问题。
3. **安全保障**:防御 SQL 注入,避免因参数拼接导致的安全漏洞。
906

被折叠的 条评论
为什么被折叠?



