SpringBoot + Mybatis + Druid + Atomikos + MySql8.0实现多数据源动态切换 + 分布式事务

本文介绍了如何在SpringBoot项目中结合Mybatis、Druid、Atomikos和Mysql8.0实现多数据源动态切换及分布式事务。在管理平台录入的文件传输关系需同步到不同测试环境的数据库,通过动态切换数据源保证数据一致性。文中详细阐述了实现步骤,包括配置文件、数据源管理、事务管理、 Dao接口、Mapper XML文件和Controller的创建等。
摘要由CSDN通过智能技术生成

介绍:

用户在管理平台录入文件传输关系,通过审批后再将文件传输关系同步到各个测试环境的数据库中(各环境使用这些数据在这里不表)。

 

科普小知识:正规的项目验收流程至少会有经过下几个环境,DEV(开发调试环境),SIT(集成测试环境),UAT(用户验收环境),TRL(准生产环境),按顺序测试通过后就可以上线投产使用了。

 

管理平台使用的数据库名为  duopai

公共数据使用的数据库名为  duopai_comm

DEV环境使用的数据库名为  duopai_dev

SIT环境使用的数据库名为   duopai_sit

UAT环境使用的数据库名为  duopai_uat

 

在管理平台录入的数据会保存在duopai数据库中,用户在查询页面选择一条文件传输关系并点击同步到DEV环境时,后台需要根据前端传递的文件传输关系ID和环境值,将该条数据同步到DEV环境的数据库duopai_dev,并更新管理台数据库duopai中该条文件传输关系的DEV部署时间,其它环境同步过程与同步DEV环境一样。

思路:

SpringBoot版本号:2.4.3

MyBatis版本号:3.4.6

MySql版本号:8.0.21

Druid版本号:1.2.3

Atomkios版本号:2.4.3

使用Druid数据库连接池管理多个数据源,根据需要部署的环境动态切换数据源,同时保证数据的一致性(同步的方法是插入duopai_dev数据库,然后更新duopai数据库,如果插入duopai_dev成功,更新duopai失败,要保证插入duopai_dev的数据回滚,即要成功一起成功,要失败一起失败)。

实现:

    一、application.yml文件内容。

spring:
  datasource:
      jdbc: 
        driverClassName: com.mysql.cj.jdbc.Driver
        initialSize: 15 
        minIdle: 15
        maxActive: 100
        maxWait: 60000
        testOnBorrow: true
        validationQuery: SELECT 1 FROM DUAL
      # 管理台数据库连接配置
      gov:
        url: jdbc:mysql://101.132.118.159:3306/duopai?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
        username: duopai
        password: duopai123
      comm:
        url: jdbc:mysql://101.132.118.159:3306/duopai_comm?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
        username: duopai
        password: duopai123
      # 业务数据库
      biz: 
        # DEV环境数据库连接配置
        dev: 
          url: jdbc:mysql://101.132.118.159:3306/duopai_dev?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
          username: duopai
          password: duopai123
        # SIT环境数据库连接配置
        sit: 
          url: jdbc:mysql://101.132.118.159:3306/duopai_sit?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
          username: duopai
          password: duopai123
        # UAT环境数据库连接配置
        uat: 
          url: jdbc:mysql://101.132.118.159:3306/duopai_uat?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
          username: duopai
          password: duopai123

mybatis:
    mapperLocations: classpath:/com/example/demo/mapper/*.xml

# 日志配置

 

二、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.4.3</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>springboot-demo-1</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>springboot-demo-1</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>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>
		
		<!-- mybatis -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.2</version>
		</dependency>
		
		<!-- atomikos -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jta-atomikos</artifactId>
		</dependency>
	
		<!-- m
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值