返回

SpringBoot 3.x 整合 Mybatis-Plus,轻松实现多数据源与 Druid 监控

后端

在 SpringBoot 中整合 Mybatis-Plus 多数据源和 Druid

简介

随着微服务架构的普及,一个应用程序可能需要连接到多个不同的数据库。为了实现这些数据库的统一管理和操作,可以使用多数据源技术。本文将详细介绍如何在 SpringBoot 中整合 Mybatis-Plus 多数据源和 Druid 连接池。

什么是 SpringBoot 多数据源?

SpringBoot 多数据源允许在一个应用程序中使用多个不同的数据源,从而可以同时连接到多个数据库。这提供了以下好处:

  • 分离不同数据源上的数据,例如用户数据和订单数据。
  • 根据需要调整不同数据源的连接池设置。
  • 同时使用多个数据库来实现复杂查询和优化性能。

什么是 Druid?

Druid 是一个开源的 Java 数据库连接池和监控工具。它提供以下功能:

  • 连接池管理,优化数据库连接的使用。
  • 数据库性能监控,提供有关连接池使用、查询性能和数据库健康状况的见解。
  • 管理控制台,用于查看数据库指标和管理连接池设置。

整合 Mybatis-Plus 多数据源和 Druid

1. 引入依赖

在项目中引入以下 Maven 依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.2</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.9</version>
</dependency>

2. 配置数据源

application.properties 文件中配置数据源信息:

# Primary 数据源
spring.datasource.primary.url=jdbc:mysql://localhost:3306/primary
spring.datasource.primary.username=root
spring.datasource.primary.password=password

# Secondary 数据源
spring.datasource.secondary.url=jdbc:mysql://localhost:3307/secondary
spring.datasource.secondary.username=root
spring.datasource.secondary.password=password

# Druid 配置
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*

3. 配置 Mybatis-Plus

application.properties 文件中配置 Mybatis-Plus:

mybatis-plus.mapper-locations=classpath:/mapper/*.xml

4. 使用 Mybatis-Plus 多数据源

在需要使用数据源的类上添加 @DS 注解,指定要使用的数据源:

@Mapper
@DS("primary")
public interface UserMapper {

    @Select("select * from user where id = #{id}")
    User getById(@Param("id") Long id);
}

5. 监控和管理数据库

Druid 提供了一个管理控制台(默认情况下位于 /druid/*),用于监控和管理数据库连接池。可以查看连接池使用情况、查询性能和数据库健康状况。

常见问题解答

1. 如何在同一事务中使用多个数据源?

这通常是不推荐的,因为事务管理变得更加复杂。最好使用一个数据源来管理所有操作。

2. Druid 管理控制台的默认密码是什么?

默认密码是 admin

3. 如何自定义 Druid 管理控制台的路径?

application.properties 文件中设置 spring.datasource.druid.stat-view-servlet.url-pattern 属性,例如:

spring.datasource.druid.stat-view-servlet.url-pattern=/custom-path/*

4. 如何禁用 Druid 管理控制台?

application.properties 文件中将 spring.datasource.druid.stat-view-servlet.enabled 设置为 false

5. 如何配置 Druid 连接池设置?

application.properties 文件中使用以下前缀配置 Druid 连接池设置:

spring.datasource.druid.##

结论

通过整合 Mybatis-Plus 多数据源和 Druid,可以在 SpringBoot 应用程序中管理和操作多个数据库。这提供了数据分离、连接池优化和数据库监控的能力。本文提供了逐步的指南,以及常见问题的解答,以帮助读者成功集成这些技术。