MyBatis-Plus多数据源——如何在一个项目中使用多个MySQL数据库

news/2024/12/22 19:59:43/

在这里插入图片描述

前言

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window) 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

本系列博客结合实际应用场景,阐述MyBatis-Plus实际应用中的问题以及使用方法。

本篇博客介绍如何基于mybatisPlus实现在一个项目中使用多数据源。

官网:https://baomidou.com/

目录

  • 前言
  • 引出
  • 一、多数据源应用场景
    • 1.主从同步,读写分离
    • 2.可能数据存储在不同的数据源
  • 二、在spring中使用多数据源
    • 1.引入依赖
    • 2.配置多个数据源
    • 3.使用@DS注解标识
    • 3.默认数据库
    • 4.根据注解决定去那个数据库
  • 总结

引出


1.mybatisPlus多数据源的使用场景;
2.基于mybatisPlus实现在一个项目中使用多数据源;

一、多数据源应用场景

1.主从同步,读写分离

主从同步,读写分离

在这里插入图片描述

创建一个数据用户,控制其权限

mysql> create user 'slave01'@'%' identified WITH mysql_native_password by '123';
Query OK, 0 rows affected (0.00 sec)
mysql> grant select ON *.* to 'slave01'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

2.可能数据存储在不同的数据源

可能需要查不同数据源的数据库

在这里插入图片描述

二、在spring中使用多数据源

1.引入依赖

<!--        mybatis多数据源--><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>2.5.6</version></dependency>

2.配置多个数据源

spring:main:allow-circular-references: truedatasource:dynamic:primary: mysql_centos #配置主数据源datasource:mysql_yun: # 数据源的名字,第一个数据源url: jdbc:mysql://124.70.138.34:3306/fresh_db_test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&allowMultiQueries=trueusername: rootpassword: XXXXdriver-class-name: com.mysql.cj.jdbc.Drivermysql_centos: # 数据源的名字,第二个数据源url: jdbc:mysql://192.168.111.130:3306/fresh_customer_db?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&allowMultiQueries=trueusername: rootpassword: 123driver-class-name: com.mysql.cj.jdbc.Driverdruid:initial-size: 1max-active: 20min-idle: 1max-wait: 60000# 去除一下durid的自动装配autoconfigure:exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration   #去除Druid自动配置

在这里插入图片描述

3.使用@DS注解标识

在这里插入图片描述

package com.tianju.fresh.service;import com.baomidou.dynamic.datasource.annotation.DS;
import com.tianju.fresh.entity.Customer;
import com.tianju.fresh.mapper.CustomerMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class TestManyDatasource {@Autowiredprivate CustomerMapper customerMapper;@DS("mysql_yun")public void findFromHuawei(){System.out.println("云服务器上的数据库");List<Customer> all = customerMapper.findAll();System.out.println(all);}@DS("mysql_centos")public void findFromLocal(){System.out.println("本地虚拟机的数据库");List<Customer> all = customerMapper.findAll();System.out.println(all);}
}

3.默认数据库

配置yml文件中
primary: mysql_centos #配置主数据源
的作用如下,默认数据库

在这里插入图片描述

4.根据注解决定去那个数据库

@DS(“mysql_yun”)
由注解确定去哪个数据源进行查找

在这里插入图片描述

package com.tianju.fresh;import com.tianju.fresh.service.TestManyDatasource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class ManyDataSourceTest {@Autowiredprivate TestManyDatasource manyDatasource;@Testpublic void test2(){manyDatasource.findFromHuawei();manyDatasource.findFromLocal();}}

总结

1.mybatisPlus多数据源的使用场景;
2.基于mybatisPlus实现在一个项目中使用多数据源;


http://www.ppmy.cn/news/1127858.html

相关文章

计算机专业毕业设计项目推荐08-英语在线点读平台(SpringBoot+Vue+MongoDB)

英语在线点读平台&#xff08;SpringBootVueMongoDB&#xff09; **介绍****系统总体开发情况-功能模块****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设…

linux 文件锁

建议锁,强制锁,记录锁的概念 建议锁&#xff1a; 如果某一个进程对一个文件持有一把锁之后&#xff0c;其他进程仍然可以直接对文件进行操作(open, read, write)而不会被系统禁止&#xff0c;即使这个进程没有持有锁。只是一种编程上的约定。建议锁只对遵守建议锁准则的进程生…

游戏遇到的问题

天涯明月刀 就是天刀的假全屏&#xff0c;很多天刀玩家可能玩其他游戏比较少或者对电脑了解不多&#xff0c;不在意帧数&#xff0c;但是肯定还是有一部分玩家发现了这个问题&#xff0c;就是“我使命召唤12都能跑到60帧的机器跑个破天刀40帧甚至30帧?”问题何在呢&#xff1…

PWM杂项

PWM 是脉冲宽度调制 (Pulse Width Modulation) 的缩写&#xff0c;是一种常用的在数字系统中控制模拟电路或者电源的技术。其基本原理是通过控制一系列方波的高电平时间宽度&#xff0c;以实现对模拟信号等的精细控制。下面简单介绍下 PWM 的基本工作流程&#xff1a; PWM 信号…

vue3创建的官网提示方法

创建: npm create vuelatest 或许会出现提示: 根据官网提示: 意味着我们需要安装或者更新create-vue的版本 后面就可以跟随提示了

Spring Boot 3.0:构建下一代Java应用的新方法

文章目录 Spring Boot 3.0&#xff1a;一览1. **模块化应用程序**2. **更强大的自动化工具**3. **更强大的安全性**4. **更好的性能和扩展性** 如何开始使用Spring Boot 3.01. 安装Spring Boot CLI2. 创建新项目3. 配置应用程序4. 编写业务逻辑5. 测试应用程序6. 构建和部署 结…

前端开发之服务器的基本概念与初识Ajax

1&#xff0c;服务器的基本概念与初识Ajax 1.1 URL地址的组成部分 1.2 客户端与服务器的通信过程 1.3 网页中如何请求数据 1.4 $.get()函数 1.4.1 $.get()函数的语法 // jQuery 中 $.get() 函数的功能单一&#xff0c;专门用来发起 get 请求&#xff0c;从而将服务器上的资源…

arm上安装19c

1、OracleLinux下载 https://yum.oracle.com/ISOS/OracleLinux/OL8/u8/aarch64/OracleLinux-R8-U8-aarch64-dvd.iso 2、Oracle Database 19c for LINUX ARM (aarch64)下载 https://www.oracle.com/database/technologies/oracle19c-linux-arm64-downloads.html