本文章以springboot项目加maven版本管理为示例。
<dependency>
<groupId>cn.guoyukun.jdbc</groupId>
<artifactId>oracle-ojdbc6</artifactId>
<version>11.2.0.3.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
首先带入数据库连接插件和多数据源配置插件,作为基础。然后进入application文件进行参数的配置。
spring:
datasource:
dynamic:
primary: orcl201
datasource:
orcl201:
driver-class-name: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.201)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))
username: xxxx
password: xxxx
orcl202:
driver-class-name: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.202)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))
username: xxxx
password: xxxxx
orcl3:
driver-class-name: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.3)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))
username: xxxx
password: xxxxx
以上是我的项目内为三个项目所需的数据源准备的配置,接下来进入数据的切换。
第一个maper
@DS("orcl3")
@Repository
public interface Data3Mapper {
@Select("select open_mode as open_mode from v$database")
String open_mode();
//2数据库最新归档日志(线程1)序列
@Select("select max(sequence#) as thread1_new from v$archived_log where thread#=1")
String thread1_new();
第二个maper
@DS("orcl202")
@Repository
public interface Data201Mapper {
//1数据库状态
@Select("select open_mode as open_mode from v$database")
String open_mode();
//2数据库最新归档日志(线程1)序列
@Select("select max(sequence#) as thread1_new from v$archived_log where thread#=1")
String thread1_new();
可以看到仅仅是在mapper文件开头使用了@DS注解并写明之前application内写好的数据源名称即可在此mapper内写明的增删改查方法指明所用的数据源。
这个方法适合需要灵活切换多个数据源的单个项目。