前言:微服务架构中,有些模块中可能不同组件用不同数据源,或者做数据库主从集群需要读写分离,动态切换数据源,或不同方法需要不同数据源就需要一个快捷方便的方法。引用动态数据源组件dynamic-datasource-spring-boot-starter就是方便的重要解决办法。
一、yml配置
spring:datasource:dynamic:primary: master # 默认主库strict: false # 是否强制匹配数据源datasource:master: # 主库username: rootpassword: 123456url: jdbc:mysql://192.168.0.6:3306/xxx_data?useUnicode=true&characterEncoding=utf8driver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourcebiz: #公共组件数据源username: rootpassword: 123456url: jdbc:mysql://192.168.0.6:3306/xxx_data?useUnicode=true&characterEncoding=utf8driver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSource
二、依赖添加
<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.6.1</version></dependency>
注意:这里版本号:要与mybatis的版本号尽量接近,不要太超前,也不要太旧,不然会如下报错。
Description:Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.Reason: Failed to determine a suitable driver class
三、加ds注解
可以加在类上面,也可以加在方法上面,还可以加在mapper层
这里master是 {master: # 主库}这个名字。选另外一个库就写@DS(“biz”)
@DS("master")
public interface UserMapper extends BaseMapper<User> {
}