Spring Cloud + MyBatis + Druid 动态数据源实现

最近公司某项目计划对数据库进行水平分库处理,因此需要实现程序根据参数自动切换数据库的功能。

本文讲述如何在 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
        
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值