首页 > 其他分享 >SpringBoot入门三十一,多数据源的使用

SpringBoot入门三十一,多数据源的使用

时间:2022-12-22 11:31:34浏览次数:74  
标签:SpringBoot spring dynamic 三十一 master datasource 数据源 DS

一、环境配置

项目基本配置参考​​SpringBoot入门一,使用myEclipse新建一个SpringBoot项目​​,使用MyEclipse新建一个SpringBoot项目即可,数据源使用MyBatis。下面开始多数据源的整合

二、pom.xml主要配置信息

<!-- 引入多数据源支持 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>

三、配置文件添加信息

# ----------------数据库连接基本配置---------------
## 连接池类型,这里我们采用hikari连接池
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
## 设置默认的数据源或者数据源组,默认值即为master
spring.datasource.dynamic.primary=master
## 严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
spring.datasource.dynamic.strict=false

# ----------------多数据源信息配置---------------
## 默认数据源("master"为指定的数据源名称,对应spring.datasource.dynamic.primary的值)
spring.datasource.dynamic.datasource.master.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.dynamic.datasource.master.url=jdbc:mysql://127.0.0.1:3307/qfx_test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8
spring.datasource.dynamic.datasource.master.username=root
spring.datasource.dynamic.datasource.master.password=666666

## 读库数据源(可多个,"db2"为指定的数据源名称,自定义即可)
spring.datasource.dynamic.datasource.db2.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.dynamic.datasource.db2.url=jdbc:mysql://127.0.0.1:3307/qfx_test2?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8
spring.datasource.dynamic.datasource.db2.username=root
spring.datasource.dynamic.datasource.db2.password=666666

使用说明

1 约定
(1)配置文件所有以下划线"_"分割的数据源,下划线"_"之前的为组名称,同组名称的数据源会放在一个组下
(2)切换数据源可以是组名,也可以是具体数据源名称,组名则切换时采用负载均衡算法切换
(3)默认的数据源名称为"master",可以通过"spring.datasource.dynamic.primary"修改
(4)方法上的注解优先于类上注解

2 多数据源配置方案
# 一主多从 # 多主多从 纯粹多库(记得设置primary) 混合配置
spring: spring: spring: spring:
datasource: datasource: datasource: datasource:
dynamic: dynamic: dynamic: dynamic:
datasource: datasource: datasource: datasource:
master: master_1: mysql: master:
slave_1: master_2: oracle: slave_1:
slave_2: slave_1: sqlserver: slave_2:
slave_3: slave_2: postgresql: oracle_1:
slave_4: slave_3: h2: oracle_2:

四、多数据源使用

1.在DAO类中添加”@DS”注解信息,使用@DS切换数据源.

2."@DS"可以注解在方法上或类上,如果同时存在则采用就近原则:

方法上注解 优先于 类上注解,如果什么都不写则使用默认数据源

3.实际上到这一步多数据源配置就已经完成了

注解            结果
----------------------------------------------------
没有@DS 默认数据源
@DS("dsName") dsName可以为组名也可以为具体某个库的名称

示例:
@DS("slave")
public interface StudentDao {
@DS("slave_1")
Student selectByPK(Long id);

List<Student> selectAll();
}

使用:DAO类

import java.util.List;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.qfx.modules.student.entity.Student;

/**
* @DS可以注解在方法上或类上,如果同时存在则采用就近原则:方法上注解 优先于 类上注解
*/
@DS("db2")
public interface StudentDao {
@DS("db2")
Student selectByPK(Long id);

List<Student> selectAll();

int insert(Student student);
}

五、事物控制

多数据源建议使用@DSTransactional

@DSTransactional
public Map<String, Integer> addStudent(Student student) {
return studentDao.insert(student);
}

六、官网

可去官网查看详细使用说明:

​https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter  ​

标签:SpringBoot,spring,dynamic,三十一,master,datasource,数据源,DS
From: https://blog.51cto.com/abcd/5962462

相关文章

  • SpringBoot(八):静态资源配置
    在SpringBoot中有六种方式来配置相关的静态资源。1.webjars导入webjars的相关静态资源依赖访问方式:localhost:8080/webjars/静态资源名称2.classpath:/static将静态资......
  • springboot 事务
    springboot事务笔记详情(bilibili.com)1.快速使用事务支持备注:使用事务的时候,一定要首先确保当前数据库的引擎是否支持事务,如果数据库引擎不支持事务,则任何配置都......
  • Was修改数据源
    目录一、Was修改数据源1、修改j2C认证器账号密码2、更改数据源一、Was修改数据源1、修改j2C认证器账号密码主要是修改数据库登录的用户名和密码选择修改的j2C认证或新......
  • SpringBoot大文件上传详解及实例代码
    ​ 前言文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好......
  • SpringBoot的学习
    SpringBootSpringBoot最核心的东西:自动装配!!!很重要!以及他的SpringApplication.run(); 方法配置用什么写:可以用xml,和springboot自带的yaml自动装配原理?重要:涉及......
  • java 实现文件夹上传(springBoot 框架)
    有时我们后台管理等服务可能会有这样一个简单需求,就是根据文件夹将整个文件夹下的所有资源都上传到我们的服务器上,本人也是搜索了大量资料,最终以最简单便捷的方式实现该功......
  • 【源码透视】SpringBoot的SPI机制
    一、从java类加载机制说起java中的类加载器负载加载来自文件系统、网络或者其他来源的类文件。jvm的类加载器默认使用的是双亲委派模式。三种默认的类加载器BootstrapCla......
  • 【源码透视】SpringBoot的SPI机制
    一、从java类加载机制说起java中的类加载器负载加载来自文件系统、网络或者其他来源的类文件。jvm的类加载器默认使用的是双亲委派模式。三种默认的类加载器BootstrapCl......
  • 基于Springboot+Mybatis+mysql+element-vue高校就业管理系统
    @目录一、系统介绍二、功能展示1.用户登陆注册2.个人信息(学生端)3.查看企业岗位信息(学生端)4.我的应聘(学生端)5.学生信息管理(辅导员)6.三方协议书审核(辅导员)7.查看班级就业......
  • 基于Springboot+Element-Vue-Admin实现简单权限管理系统
    @目录一、系统介绍二、功能展示1.用户登陆2.用户管理3.权限管理、权限设置4.菜单管理三、数据库展示四、其它1.数据库表2.获取源码一、系统介绍系统主要功能:系统实现了用......