最近公司某项目计划对数据库进行水平分库处理,因此需要实现程序根据参数自动切换数据库的功能。
本文讲述如何在 Spring Cloud + MyBatis + Druid + Oracle 环境下实现动态数据源切换的功能。
配置数据源
在两个 Oracle 数据库创建 Person 表,并插入几行数据:
create table Person
(
id NUMBER(8) not null,
name VARCHAR2(64) not null
)
INSERT INTO Person (id, name) VALUES (1, 'Leo');
INSERT INTO Person (id, name) VALUES (2, 'Lee');
INSERT INTO Person (id, name) VALUES (3, 'Lih');
为便于标识不同数据库的数据,可以将第三行 insert 语句改为:
INSERT INTO Person (id, name) VALUES (3, 'LeoLee');
创建一个 Spring Boot 项目,其 application.yml 文件添加两个 Oracle 库的连接信息:
spring:
application:
name: multisource-service
datasource:
druid:
web-stat-filter:
enabled: true
url-pattern: /*
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*,"
stat-view-servlet:
enabled: true
login-username: admin
login-password: admin
reset-enable: false
url-pattern: /druid/*
total:
url: jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP) (HOST = 10.88.115.103 )(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = trade) ) )
username: user
password: passwd
driver-class-name: oracle.jdbc.OracleDriver
initial-size: 32
max-active: 32
min-idle: 5
max-wait: 60000
part1:
url: jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP) (HOST = 10.88.115.94 )(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = trade) ) )
username: user
password: passwd

最低0.47元/天 解锁文章
2800

被折叠的 条评论
为什么被折叠?



