Springboot MybatisPlus多数据源
前言
由于业务需要,时常会出现需要操作不同数据源的场景.本文介绍了Springboot MybatisPlus快速搭建多数据操作的案例.
1. 数据库创建
创建数据库1
CREATE DATABASE IF NOT EXISTS database1
default charset utf8
COLLATE utf8_general_ci
创建表1
SET NAMES utf8mb4
;
SET FOREIGN_KEY_CHECKS
= 0;
DROP TABLE IF EXISTS `t_demo_user1
`;
CREATE TABLE `t_demo_user1
` (
`id
` int(11) NOT NULL COMMENT 'id',
`username
` varchar(20) CHARACTER SET utf8
COLLATE utf8_general_ci
NOT NULL COMMENT '用户名',
`password
` varchar(50) CHARACTER SET utf8
COLLATE utf8_general_ci
NOT NULL COMMENT '密码',
`del_flag
` bit(1) NOT NULL COMMENT '删除标记 0 未删除, 1 已删除',
PRIMARY KEY (`id
`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8
COLLATE = utf8_general_ci ROW_FORMAT
= Dynamic
;
INSERT INTO `t_demo_user1
` VALUES (1, '张三', '123456', b
'0');
INSERT INTO `t_demo_user1
` VALUES (2, '李四', '123456', b
'0');
SET FOREIGN_KEY_CHECKS
= 1;
创建数据库2
CREATE DATABASE IF NOT EXISTS database2
default charset utf8
COLLATE utf8_general_ci
创建表2
SET NAMES utf8mb4
;
SET FOREIGN_KEY_CHECKS
= 0;
DROP TABLE IF EXISTS `t_demo_user2
`;
CREATE TABLE `t_demo_user2
` (
`id
` int(11) NOT NULL COMMENT 'id',
`username
` varchar(20) CHARACTER SET utf8
COLLATE utf8_general_ci
NOT NULL COMMENT '用户名',
`password
` varchar(50) CHARACTER SET utf8
COLLATE utf8_general_ci
NOT NULL COMMENT '密码',
`del_flag
` bit(1) NOT NULL COMMENT '删除标记 0 未删除, 1 已删除',
PRIMARY KEY (`id
`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8
COLLATE = utf8_general_ci ROW_FORMAT
= Dynamic
;
INSERT INTO `t_demo_user2
` VALUES (1, '苍老师', '123456', b
'0');
INSERT INTO `t_demo_user2
` VALUES (2, '玛利亚', '123456', b
'0');
SET FOREIGN_KEY_CHECKS
= 1;
2. 代码编写
2.1 创建springboot maven项目, POM.xml如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0
</modelVersion>
<parent>
<groupId>org.springframework.boot
</groupId>
<artifactId>spring-boot-starter-parent
</artifactId>
<version>2.3.2.RELEASE
</version>
<relativePath/>
</parent>
<groupId>com.test.multidatasource
</groupId>
<artifactId>demo
</artifactId>
<version>0.0.1-SNAPSHOT
</version>
<name>demo
</name>
<description>Demo project for Spring Boot
</description>
<properties>
<java.version>1.8
</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot
</groupId>
<artifactId>spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou
</groupId>
<artifactId>mybatis-plus-boot-starter
</artifactId>
<version>3.2.0
</version>
</dependency>
<dependency>
<groupId>com.baomidou
</groupId>
<artifactId>dynamic-datasource-spring-boot-starter
</artifactId>
<version>3.2.1
</version>
</dependency>
<dependency>
<groupId>mysql
</groupId>
<artifactId>mysql-connector-java
</artifactId>
<version>8.0.21
</version>
</dependency>
<dependency>
<groupId>org.projectlombok
</groupId>
<artifactId>lombok
</artifactId>
<version>1.18.10
</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot
</groupId>
<artifactId>spring-boot-maven-plugin
</artifactId>
</plugin>
</plugins>
</build>
</project>
代码结构
核心配置
spring:
datasource:
dynamic:
primary: first #设置默认的数据源或者数据源组,默认值即为master
strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源.
datasource:
first:
url: jdbc:mysql://localhost:3306/database1
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
second:
url: jdbc:mysql://localhost:3306/database2
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
Mapper接口上指定需要访问的数据库表示,即定义在yml中的key值
测试
测试结果
结束
完整代码已上传到csdn文件中心,可以点击下载.免费的! 多数据源源码下载 喜欢的小伙伴还请帮忙三连哦!!!