在现代企业应用中,常常需要与多个数据库交互,比如分布式数据库、读写分离、业务拆分等场景。MyBatis-Plus 作为 MyBatis 的增强工具,支持多数据源的集成,可以帮助开发者轻松管理和切换多个数据库连接。
一、MyBatis-Plus 多数据源的使用场景
- 业务拆分:不同业务模块使用不同的数据库,比如用户信息存储在一个数据库,订单信息存储在另一个数据库。
- 读写分离:通过主从数据库配置,将写操作指向主库,读操作指向从库。
- 分布式数据库:不同的数据库实例存储不同的数据,通过路由规则选择不同的数据源。
二、MyBatis-Plus 多数据源的实现原理
MyBatis-Plus 多数据源的实现依赖于 Spring 框架的多数据源支持。通过为不同的数据源配置独立的 DataSource
和 SqlSessionFactory
,实现多个数据库连接的管理。结合 DynamicDataSource
,可以根据业务需求动态切换数据源。
三、配置步骤
1. 引入依赖
首先,确保项目中已经引入了 MyBatis-Plus 和相关的数据库驱动。以 MySQL 为例,可以在 pom.xml
文件中引入以下依赖:
<dependencies>
<!-- MyBatis-Plus Starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<!-- MySQL 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
2. 配置多数据源
在 application.yml
中配置多个数据源。这里我们配置两个 MySQL 数据源,分别为 master
和 slave
数据源,模拟读写分离的场景。
spring:
datasource:
master:
url: jdbc:mysql://localhost:3306/master_db?useSSL=false&serverTimezone=UTC
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
slave:
url: jdbc:mysql://localhost:3306/slave_db?useSSL=false&serverTimezone=UTC
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
mapper-locations: classpath:mapper/**/*.xml
type-aliases-package: com.example.demo.model
master
:主库,处理写操作。slave
:从库,处理读操作。