You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.8 KiB
108 lines
2.8 KiB
1 year ago
|
# mybatis多数据源配置
|
||
|
|
||
|
## dynamic-datasource
|
||
|
|
||
|
### 1、引入依赖
|
||
|
|
||
|
4.1.3版本是稳定版
|
||
|
|
||
|
```xml
|
||
|
<!-- dynamic-datasource -->
|
||
|
<dependency>
|
||
|
<groupId>com.baomidou</groupId>
|
||
|
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
|
||
|
<version>4.1.3</version>
|
||
|
</dependency>
|
||
|
```
|
||
|
|
||
|
### 2、配置数据源
|
||
|
|
||
|
需要注意的是,这里使用了druid,p6spy
|
||
|
|
||
|
需要配置对应的数据源,使用primary来指明默认的数据源
|
||
|
|
||
|
```yml
|
||
|
#配置数据源
|
||
|
spring:
|
||
|
autoconfigure:
|
||
|
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
|
||
|
datasource:
|
||
|
dynamic:
|
||
|
primary: db1
|
||
|
datasource:
|
||
|
db1:
|
||
|
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
|
||
|
url: jdbc:p6spy:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:stand_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
||
|
username: ${DB_USER:root}
|
||
|
password: ${DB_PWD:12356}
|
||
|
type: com.alibaba.druid.pool.DruidDataSource
|
||
|
db2:
|
||
|
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
|
||
|
url: jdbc:p6spy:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:13306}/${DB_NAME:test}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
||
|
username: ${DB_USER:root}
|
||
|
password: ${DB_PWD:12356}
|
||
|
type: com.alibaba.druid.pool.DruidDataSource
|
||
|
```
|
||
|
|
||
|
集成了druid需要去除druid配置
|
||
|
|
||
|
```yml
|
||
|
autoconfigure:
|
||
|
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
|
||
|
```
|
||
|
|
||
|
去除框架原来对druid数据源的配置类
|
||
|
|
||
|
```java
|
||
|
//import com.alibaba.druid.pool.DruidDataSource;
|
||
|
//import lombok.extern.slf4j.Slf4j;
|
||
|
//import org.springframework.boot.context.properties.ConfigurationProperties;
|
||
|
//import org.springframework.context.annotation.Bean;
|
||
|
//import org.springframework.context.annotation.Configuration;
|
||
|
//import org.springframework.context.annotation.Primary;
|
||
|
//
|
||
|
//import javax.sql.DataSource;
|
||
|
//
|
||
|
//@Configuration
|
||
|
//@Slf4j
|
||
|
//public class DataBaseConfig {
|
||
|
//
|
||
|
// @Primary
|
||
|
// @Bean(name = "dataSource")
|
||
|
// @ConfigurationProperties(prefix = "spring.datasource.druid")
|
||
|
// public DataSource dataSource() {
|
||
|
// return new DruidDataSource();
|
||
|
// }
|
||
|
//
|
||
|
//}
|
||
|
```
|
||
|
|
||
|
排除掉DruidDataSourceAutoConfigure
|
||
|
|
||
|
在启动类中需要排除掉DruidDataSourceAutoConfigure.class,就是取消Druid的数据源的自动配置类。
|
||
|
|
||
|
```java
|
||
|
@SpringBootApplication(exclude = {
|
||
|
DataSourceAutoConfiguration.class,
|
||
|
DruidDataSourceAutoConfigure.class
|
||
|
})
|
||
|
```
|
||
|
|
||
|
也可以在配置类中
|
||
|
|
||
|
```yml
|
||
|
autoconfigure:
|
||
|
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
|
||
|
```
|
||
|
|
||
|
### 3、测试
|
||
|
|
||
|
使用@DS("db2")注解实现切换数据源
|
||
|
|
||
|
```java
|
||
|
public interface TestMapper extends BaseMapper<JSONObject> {
|
||
|
@DS("db2")
|
||
|
JSONObject getAll13();
|
||
|
}
|
||
|
```
|