多数据源典型使用场景
- 业务复杂(数据量大):业务复杂就需要拆分,伴随着的数据库也进行拆分,就涉及到了多个数据库
- 读写分离:为了解决数据库读性能平静(都比写性能更高,写锁会影响读阻塞,从而影响读的性能)
用法
- 导入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<!--我用的version是3.4.0,请根据自己项目的其他依赖版本选出合适的version-->
<version>${dynamic-datasource-spring-boot-starter-version}</version>
</dependency>
- 在配置文件中导入多个数据库
spring:
datasource:
dynamic:
# 默认数据源
primary: datasource1
datasource:
datasource1:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/datasource1?serverTimezone=Asia/Shanghai
username: root
password: xxx
druid-type: com.alibaba.druid.pool.DruidDataSource
datasource2:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/datasoutce2?serverTimezone=Asia/Shanghai
username: root
password: xxx
dynamic-type: com.baomidou.dynamic.datasource.spring.boot.autoconfigure.druid.DruidDataSource
要注意的是,两个数据库的type内容不能相同,否则会报错
3. 在Mapper文件中添加注解
@DS("datasource2")
@Mapper
public interface XxxMapper{
}
这里DS注解的value就是要操作的数据库,比如XxxMapper在datasource2中,就填入datasource2
我们在上述配置文件中加入了默认数据库,也就是说,如果当前Mapper是在默认数据库中的话,就不需要添加这个注解了
这样就可以轻松的配置多数据源了