常見的使用Mybatis-Plus配置多數據源方式有兩種:一種是通過java config的方式手動配置兩個數據源,另一種方式便是使用 dynamic-datasource-spring-boot-starter。
dynamic-datasource-spring-boot-starter 是一個基於springboot的快速集成多數據源的啓動器。下面介紹使用 dynamic-datasource-spring-boot-starter 配置多數據源:
1、引入依賴
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
2、application.properties添加配置
spring.autoconfigure.exclude=com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
#設置默認數據庫源
spring.datasource.dynamic.primary=mydb1
#嚴格匹配數據源,默認爲false,true未匹配到指定數據庫時拋異常,false使用默認數據源
spring.datasource.dynamic.strict=false
#配置數據源mydb1
spring.datasource.dynamic.datasource.mydb1.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.dynamic.datasource.mydb1.url=jdbc:mysql://localhost:3306/mydb1?serverTimezone=UTC
spring.datasource.dynamic.datasource.mydb1.username=root
spring.datasource.dynamic.datasource.mydb1.password=123456
#配置數據源mydb2
spring.datasource.dynamic.datasource.mydb2.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.dynamic.datasource.mydb2.url=jdbc:mysql://localhost:3306/mydb2?serverTimezone=UTC
spring.datasource.dynamic.datasource.mydb2.username=root
spring.datasource.dynamic.datasource.mydb2.password=123456
3、使用
通過 @DS 註解配置選擇數據源,並且可以在類上進行配置。如果不使用@DS註解的類則使用primary配置的默認數據源。
@DS("mydb1")
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
@DS("mydb2")
@Mapper
public interface ProductMapper extends BaseMapper<Product> {
}
@Autowired
UserMapper userMapper;
@Autowired
ProductMapper productMapper;
void test() {
User user = userMapper.selectById(1);
System.out.println("數據源mydb1:"+user.toString());
Product product = productMapper.selectById(2);
System.out.println("數據源mydb2:"+product.toString());
}
4、集成druid連接池
引入依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.12</version>
</dependency>
修改配置文件,排除掉druid原生的自動配置
spring.autoconfigure.exclude=com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
或者修改Application
@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)