基于SpringBoot的多数据源配置
程序员文章站
2024-03-22 18:42:28
...
文章优先发表在个人博客:https://www.xdx97.com/article/736976551236599808
多数据源:就是可以同时操作多个数据库,之前我们的增删改查都是在一个数据库上面操作,现在可以同时操作多个数据库。
一、基于SpringBoot+MybatisPlus实现多数据源
基于MybatisPlus是最简单的一种实现方式了
为了代码的简介,直接使用controller去调用mapper
1-1: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 http://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.1.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>mutipledatasource2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mutipledatasource2</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>2.5.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.20</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>local1</id>
<properties>
<profileActive>local1</profileActive>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>local2</id>
<properties>
<profileActive>local2</profileActive>
</properties>
</profile>
</profiles>
</project>
1-2:application.yml
server:
port: 8080
spring:
datasource:
dynamic:
primary: db1 # 配置默认数据库
datasource:
db1: # 数据源1配置
url: jdbc:mysql://xxxxx:123/test?characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=GMT%2B8
username: 123
password: 123
driver-class-name: com.mysql.cj.jdbc.Driver
db2: # 数据源2配置
url: jdbc:mysql://xxxx:123/wangshuai?characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=GMT%2B8
username: 123
password: 123
driver-class-name: com.mysql.cj.jdbc.Driver
durid:
initial-size: 1
max-active: 20
min-idle: 1
max-wait: 60000
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 去除druid配置
需要在上面的 yml 里面配置的数据库地址
1-3:TestController
import com.xdx97.test.mapper.TestMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@Autowired
TestMapper testMapper;
@GetMapping("/xdx/one")
public String one(){
return testMapper.getDBOne();
}
@GetMapping("/xdx/two")
public String two(){
return testMapper.getDBTwo();
}
}
1-4:TestMapper
下面的这个 @DS注解就是配置数据源的注解,可以配置在类上面也可以配置在这个方法上面,优先使用方法上面的。
import com.baomidou.dynamic.datasource.annotation.DS;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface TestMapper {
@Select("SELECT name FROM xdx_test LIMIT 1")
@DS("db1")
String getDBOne();
@Select("SELECT user_name FROM user LIMIT 1")
@DS("db2")
String getDBTwo();
}
二:其它
- 配置多数据源,技术不同也会有所差别,像Mybatis需要配置对应的配置。
- 当然了我们知道有一个sessionFactory,也可以在获取这个sessionfactory的时候去指定数据库配置,然后再用这个sessionfactory来获取mapper
上一篇: 线性表 查找
推荐阅读
-
基于SpringBoot的多数据源配置
-
SpringBoot集成Security,前后端分离的SecurityConfig配置
-
基于Grails 2.3.4的多模板Scaffolding实现 博客分类: grails grails
-
基于Grails 2.3.4的多模板Scaffolding实现 博客分类: GroovyGrails GRAILSGROOVYSCAFFOLDING
-
基于SCHEMA的AOP配置 博客分类: 原创 AOPXML
-
基于KVM的SRIOV直通配置及性能测试
-
tomcat下jndi的三种配置方式 博客分类: Web&App Server tomcatjndi数据源
-
《SpringDataJpa系列教程》07-查询——多对多(基于springboot2.0.3+MySQL5.7)
-
集智数据平台两种数据源连接的配置方式 博客分类: 集智 配置数据数据源jdbc服务器
-
实现基于nginx的tomcat负载均衡和集群配置 博客分类: 实战技术 nginxtomcatmemcached