使用
pom文件
<parent>
<!-- 父工程 对各种常用依赖(并非全部)的版本进行了管理-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
</parent>
<dependencies>
<!-- springboot-web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- <!–Thymeleaf–>-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-thymeleaf</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>nz.net.ultraq.thymeleaf</groupId>-->
<!-- <artifactId>thymeleaf-layout-dialect</artifactId>-->
<!-- <version>2.5.1</version>-->
<!-- </dependency>-->
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>com.kingbase</groupId>
<artifactId>kingbase8</artifactId>
<version>8.6.0</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
配置文件
# Global Default Configuration #
#mybatis-plus-configuration
mybatis-plus.mapper-locations=classpath:mapper/**/*Mapper.xml
mybatis-plus.configuration.jdbc-type-for-null=NULL
mybatis-plus.global-config.db-config.id-type=input
mybatis-plus.global-config.super-mapper-class=com.baomidou.mybatisplus.core.mapper.BaseMapper
mybatis-plus.type-aliases-package=com.xmeport.digital.core.model.entity
#mybatis-plus.type-handlers-package=com.xmeport.digital.core.config.database.typehandlers
# Dev Configuration #
#spring-configuration
#dynamic-datasource-configuration
spring.datasource.dynamic.primary=hello
#strict默认为false,如果找不到数据源,默认使用primary的默认数据源,设为true 找不到则报错
spring.datasource.dynamic.strict=true
#默认立即初始化数据源,true则支持在需要建立连接时再初始化数据源
spring.datasource.dynamic.lazy=true
# 如果有druid依赖,默认使用druid,这里手动指定
spring.datasource.dynamic.datasource.hello.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.dynamic.datasource.hello.driver-class-name=com.kingbase8.Driver
spring.datasource.dynamic.datasource.hello.url=jdbc:kingbase8://***.*.*.*:54321/hello
spring.datasource.dynamic.datasource.hello.username=hello
spring.datasource.dynamic.datasource.hello.password=hello
spring.datasource.dynamic.datasource.hello2.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.dynamic.datasource.hello2.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.dynamic.datasource.hello2.url=jdbc:oracle:thin:@192.1.1.1:1521:orcl
spring.datasource.dynamic.datasource.hello2.username=hello2
spring.datasource.dynamic.datasource.hello2.password=hello2
注意
它是通过在service实现类上加注解@DS(“hello”)
来实现自动切换数据源的,用到了代理
所以在使用mybatis时,尽量不用service内部的链式Wrapper
这些方法 ,数据源切面是切进去了。但是query()返回的实体,内部封装的service是原始对象,不是切面对象,所以执行list()的时候不会切换数据源