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

news2024/11/20 8:41:04

在这里插入图片描述

前言

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: true
  datasource:
    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=true
          username: root
          password: XXXX
          driver-class-name: com.mysql.cj.jdbc.Driver
        mysql_centos: # 数据源的名字,第二个数据源
          url: jdbc:mysql://192.168.111.130:3306/fresh_customer_db?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&allowMultiQueries=true
          username: root
          password: 123
          driver-class-name: com.mysql.cj.jdbc.Driver
      druid:
        initial-size: 1
        max-active: 20
        min-idle: 1
        max-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 {
    @Autowired
    private 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 {

    @Autowired
    private TestManyDatasource manyDatasource;

    @Test
    public void test2(){
        manyDatasource.findFromHuawei();
        manyDatasource.findFromLocal();
    }

}

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1046348.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小程序中如何同步公众号的文章

小程序为了更好的服务客户&#xff0c;有时候需要显示公众号的文章&#xff0c;用于更具体介绍产品、关注公众号和会员服务等。下面就将具体介绍&#xff1a;小程序中如何同步显示公众号的文章。 1. 关联公众号。在管理员后台->会员管理->通知处&#xff0c;关联服务号。…

【大数据开发技术】实验05-HDFS目录与文件的创建删除与查询操作

文章目录 HDFS目录与文件的创建删除与查询操作一、实验目标二、实验要求三、实验内容四、实验步骤附&#xff1a;系列文章 HDFS目录与文件的创建删除与查询操作 一、实验目标 熟练掌握hadoop操作指令及HDFS命令行接口掌握HDFS目录与文件的创建方法和文件写入到HDFS文件的方法…

软件测试工作步骤详情

软件测试步骤按照研发阶段一般分为5个部分&#xff1a;单元测试、集成测试、确认测试、系统测试、验收测试&#xff0c;下面将不同阶段需要的一些工作内容做一下梳理希望可以帮助到大家。 一、单元测试的内容&#xff1a;&#xff08;白盒为主&#xff0c;黑盒为辅&#xff09;…

业务安全情报23期 | 国庆前夕,又成功狙击一个倒卖机票的不法团伙

中秋国庆临近&#xff0c;热门航线机票预定量暴增。顶象防御云业务安全情报中心&#xff0c;监测到一个不法团伙进行虚假占座攻击&#xff0c;倒卖热门航班机票。在顶象协助下&#xff0c;该航空公司有效阻截多日的攻击&#xff0c;保障乘客购票利益。 热门航班遭到“倒票”攻击…

IPV6知识总结

目录 一、IPV6与IPV4相比改进之处1. “无限“的地址空间2. 层次化的地址结构3. 即插即用4. 简化了报头头部5.保证端到端网络的完整性6.安全性增强7.增强QoS特性 二、IPV6的规则IPV6地址主要分为了三类&#xff1a;单播地址&#xff0c;组播地址&#xff0c;任播地址单播地址组播…

基于低代码平台少量编码完成软件开发

一、低代码平台是什么 低代码平台简单来说就是只需要少量代码、甚至无需代码即可完成系统开发。 过去开发一套系统都需要软件工程师通过代码进行开发&#xff0c;所以任何一个系统的开发都需要大量的软件工程师资源&#xff0c;使得很多企业谈到系统开发就想到了高额的成本投入…

【MySQL数据库】基本命令操作及语句总结

目录 前言 一、数据库连接 二、创建数据库 2.1 创建数据库 2.2 删除数据库 2.3 查看数据库 2.4 使用数据库 三、创建数据表 3.1 创建数据表 3.2 删除数据表 3.3 插入语句 3.4 查看数据表 四、数据库操作 4.1 显示列 4.2 显示索引 4.3 修改表名 4.4 修改数据类…

CPK分析工具页面设计源码

效果图: 父组件 <template><div class="app-container home"><!-- <el-divider />--><el-rowtype="flex"justify="space-around"class="row-bg"style="margin-bottom: 10px"><el-col…

uni-app 之 Toast 消息提示

uni-app 之 Toast 消息提示 image.png <template> <view class"content"> <u-button click"showToast">Toast 消息提示 </u-button><u-toast ref"uToast"></u-toast></view></template> <…

SAP CDS->ODATA->POSTMAN test (二)

/IWFND/GW_CLIENT&#xff1a;测试OData服务 /IWFND/MAINT_SERVICE&#xff1a;激活并维护服务 SEGW&#xff1a;OData建模 /iwfnd/error_log&#xff1a;分析错误 增加注释&#xff1a; OData.publish: true 输入/O/IWFND/MAINT_SERVICE&#xff0c;添加服务 添加所选的服务…

realloc函数应用IO泄露体验

本题主要介绍realloc函数&#xff0c;平时我们使用realloc最多便是在打malloc_hook–>onegadget的时候&#xff0c;使用realloc_hook调整onegadget的栈帧&#xff0c;从而getshell。 在realloc函数中&#xff0c;也能像malloc一样创建堆&#xff0c;并且比malloc麻烦一些&a…

C# Winform编程(1)基础篇

C# Winform编程&#xff08;1&#xff09;基础篇 Visual Studio 2022开发环境新建WinForm应用项目WinForm代码结构新键窗体文件从Form1启动Form2修改控件属性退出程序和关闭窗口 Visual Studio 2022开发环境新建WinForm应用项目 WinForm代码结构 Program.cs 程序入口 Applicati…

AMQP[RabbitMQ]小结

消息队列: 组成: 交换器,队列,绑定 作用:异步处理,削峰,服务解耦 交换器 RabbitMQ常见的exchange(交换器)类型: direct–路由键完全匹配才可以 fanout–广播 topic --主题,模糊匹配路由键 队列 messagequeue: 组成: 路由键 routine-key—决定消息发给谁 优先级prio…

vue 普通组件的 局部注册

vue 普通组件的 注册 11 Vue2_3入门到实战-配套资料\01-随堂代码素材\day03\素材\00-准备代码\小兔鲜首页静态页\src

工厂与观察者模式

工厂模式介绍 通过一个加工厂&#xff0c;在这个工厂中添加对应材料&#xff0c;我们就可以得到想要的东西&#xff0c;在程序设计中&#xff0c;这种模式就叫做工厂模式&#xff0c;工厂生成出的产品就是某个类的实例&#xff0c;也就是对象。 关于工厂模式一共有三种&#…

【C++11】左值引用右值引用,移动构造的使用

&#x1f30f;博客主页&#xff1a; 主页 &#x1f516;系列专栏&#xff1a; C ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ &#x1f60d;期待与大家一起进步&#xff01; 文章目录 一、左值与右值二、 引用总结&#xff1a;1.左值&#xff1a;2.右值&#xff1a; 三、…

微服务调用没有返回值,无法组成对象,但是会有feign的信息

事件起因 还是那个项目&#xff0c;至少对于我来说要学习的东西其实还是挺多的。 需求 员工信息管理&#xff0c;员工简历&#xff0c;导出功能&#xff0c;需要去联查员工的各项信息&#xff0c;其中&#xff0c;涉及到微服务的之间的操作出现了问题&#xff0c;目前主要的…

时空碰撞之当Leaflet遇到Echarts

前言 在之前的博客中&#xff0c;有介绍如何进行Leaflet展示的&#xff0c;也有介绍Echarts如何进行高效图表展示的。针对一些时空类的场景&#xff0c;比如需要跟随GIS地图一起进行图表展示&#xff0c;如何在地图上集成图表插件。本文将以常用的Leaflet为例&#xff0c;重点讲…

JAVA中使用CompletableFuture进行异步编程

JAVA中使用CompletableFuture进行异步编程 1、什么是CompletableFuture CompletableFuture 是 JDK8 提供的 Future 增强类&#xff0c;CompletableFuture 异步任务执行线程池&#xff0c;默认是把异步任 务都放在 ForkJoinPool 中执行。 在这种方式中&#xff0c;主线程不会…

I/O

IO 流简介 IO 即 Input/Output&#xff0c;输入和输出。数据输入到计算机内存的过程即输入&#xff0c;反之输出到外部存储&#xff08;比如数据库&#xff0c;文件&#xff0c;远程主机&#xff09;的过程即输出。IO 流在 Java 中分为输入流和输出流&#xff0c;而根据数据的…