springboot MyBatis配置Druid多数据源

项目地址:https://github.com/heng1234/springboot2.x/tree/master/boot_mult_datasource

在实际场景中,会遇到不同用户拥有不同的数据源,这些数据源信息配置在数据库表里面,需要我们根据用户切换成相应的数据源。会介绍如何在SpringBoot + Mybatis中配置多数据源

数据库 mysql:

CREATE TABLE `student` (
`SNO` varchar(3) NOT NULL,
`SNAME` varchar(9) NOT NULL,
`SSEX` char(2) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

数据mysql:

INSERT INTO `txlcn-demo`.`student`(`SNO`, `SNAME`, `SSEX`) VALUES ('001', 'KangKang', 'M');
INSERT INTO `txlcn-demo`.`student`(`SNO`, `SNAME`, `SSEX`) VALUES ('002', 'Mike', 'M');
INSERT INTO `txlcn-demo`.`student`(`SNO`, `SNAME`, `SSEX`) VALUES ('003', 'Jane', 'F');

数据库 oracle:

CREATE TABLE "BOOT"."STUDENT"
   (  "SNO" VARCHAR2(3) NOT NULL ENABLE,
   "SNAME" VARCHAR2(9) NOT NULL ENABLE,
   "SSEX" CHAR(2) NOT NULL ENABLE,
   "DATASOURCE" VARCHAR2(10),
   CHECK (SNO IS NOT NULL) ENABLE,
   CHECK (SNAME IS NOT NULL) ENABLE,
   CHECK (SSEX IS NOT NULL) ENABLE
   ) SEGMENT CREATION IMMEDIATE
   PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
   STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
   PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
   TABLESPACE "SYSTEM"

数据 oracle:

pom文件引入jar

application.yml中配置多数据源

创建两个数据源配置类MysqlDatasourceConfig和OracleDatasourceConfig:

MysqlDatasourceConfig:

OracleDatasourceConfig:

测试

配置完多数据源,接下来分别在com.boot.boot_mult_datasource.mysql.mapper路径和com.boot.boot_mult_datasource.oracle.mapper路径下创建两个mapper接口:

MysqlStudentMapper:

OracleStudentMapper:

接着创建mapper接口对应的实现:

resources下的mysqlmapper创建

MysqlStudentMapper.xml:

resources下的oraclemapper创建

OracleStudentMapper.xml:

项目结构:

image-20191028111138748

访问:http://localhost:7005/student/querystudentsfrommysql

image-20191028112410061

访问:http://localhost:7005/student/querystudentsfromoracle

image-20191028112456071

下一章:SpringBoot 中使用Redis缓存

Last updated

Was this helpful?