三步实现Mybatis(Mybatis-Plus)多数据源配置

MyBatis 多数据源支持 MyBatis 支持多数据源配置并与 Spring 框架无缝集成。通过为每个数据源配置单独的DataSource,可以轻松实现对多个数据库的访问。在复杂的场景下,还可以使用实现动态数据源切换。通过合理使用多数据源配置,能够实现读写分离、模块分离和跨系统集成,从而提升系统的性能和灵活性。在开发过程中,确保每个数据源的配置正确,事务管理器和数据源的绑定清晰,是确保多数据源功能正常工作的关键。 阅读详情

前言

要实现多数据源可以采用dynamic-datasource或者mybatis-mate,本文就以dynamic-datasource为例

dynamic-datasource简介

springboot 快速集成多数据源的启动器 使用文档(opens new window)

  • 支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。
  • 支持数据库敏感配置信息 加密 ENC()。
  • 支持每个数据库独立初始化表结构schema和数据库database。
  • 支持无数据源启动,支持懒加载数据源(需要的时候再创建连接)。
  • 支持 自定义注解 ,需继承DS(3.2.0+)。
  • 提供并简化对Druid,HikariCp,BeeCp,Dbcp2的快速集成。
  • 提供对Mybatis-Plus,Quartz,ShardingJdbc,P6sy,Jndi等组件的集成方案。
  • 提供 自定义数据源来源 方案(如全从数据库加载)。
  • 提供项目启动后 动态增加移除数据源 方案。
  • 提供Mybatis环境下的 纯读写分离 方案。
  • 提供使用 spel动态参数 解析数据源方案。内置spel,session,header,支持自定义。
  • 支持 多层数据源嵌套切换 。(ServiceA >>> ServiceB >>> ServiceC)。
  • 提供 **基于seata的分布式事务方案。
  • 提供 本地多数据源事务方案。

约定

  1. 本框架只做 切换数据源 这件核心的事情,并不限制你的具体操作,切换了数据源可以做任何CRUD。
  2. 配置文件所有以下划线 _ 分割的数据源 首部 即为组的名称,相同组名称的数据源会放在一个组下。
  3. 切换数据源可以是组名,也可以是具体数据源名称。组名在切换时采用负载均衡算法切换。
  4. 默认的数据源名称为 master ,你可以通过 spring.datasource.dynamic.primary 修改。
  5. 方法上的注解优先于类上注解。
  6. DS支持继承抽象类上的DS,暂不支持继承接口上的DS。

下面介绍具体使用

第一步:导入依赖

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>4.1.3</version><!--版本自选-->
</dependency>

第二步:编写多数据源配置

以配置MySQL、postgresql两种不同的数据库为例

spring:
  datasource:
    dynamic:
      primary: postgresql #设置默认的数据源或者数据源组,默认值即为master
      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      datasource:
        postgresql:  # 名称可以自定义
          url: jdbc:postgresql://192.168.xxx.xxx:5432/db_name?useUnicode=true&characterEncoding=UTF-8
          username: root
          password: xxx
          driver-class-name: org.postgresql.Driver
        mysql:
          url: jdbc:mysql://192.168.xxx.xxx:3306/db_name?serverTimezone=Asia/Shanghai&useSSL=true&characterEncoding=utf-8&useUnicode=true
          username: root
          password: xxx
          driver-class-name: com.mysql.cj.jdbc.Driver

参考:

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

第三步:指定数据源

在Mapper层,指定数据源使用@DS(数据源名称)注解,可以注解在方法上或类上,同时存在就近原则 方法上注解 优先于 类上注解。
在这里插入图片描述

如:

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mxf.springkafka.pojo.KDaylineQfq;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;

@Mapper
public interface KDaylineQfqMapper extends BaseMapper<KDaylineQfq> {

    List<KDaylineQfq> selectByCode(@Param("stockCode") String stockCode);

    @DS("mysql")
    List<KDaylineQfq> selectByCode2(@Param("stockCode") String stockCode);

    @DS("mysql")
    void insertMysqlData(@Param("data") KDaylineQfq data);

    @DS("mysql")
    void insertMysqlBatchData(@Param("data") List<KDaylineQfq> data);
}

Mybatis-plus多数据源配置 Mybatis-plus官方提供了一种多数据源的配置方式, 通过注解的方式来切换不同的数据源, 本文提供另一种切换数据源的方式, 通过mapper的路径来切换数据源, 此方法使用简单, 配置好之后直接不需要进行什么额外的操作了。 阅读详情

相关推荐

Mybatis | Mybatis-plus配置多数据源,连接多数据库

使用mybatis或者mybatis-plus配置多数据源,连接多个数据库。实现在同一个项目同一个module里面进行多数据库的操作。

weixin_45866737的博客 3万+

Mybatis配置多数据源

Spring Boot项目使用Mybatis,既要从上游系统同步数据,又要操作本系统的数据库,所以需要引入双数据源,配置Mybatis。

weixin_44385360的博客 1万+

【第21章】MyBatis-Plus多数据源支持

随着项目规模的扩大,单一数据源已无法满足复杂业务需求,多数据源(动态数据源)应运而生。本文将介绍两种 MyBatis-Plus 的多数据源扩展插件:开源生态的和 企业级生态的。回到顶部通过上述介绍,我们可以看到和都提供了强大的多数据源支持,开发者可以根据项目需求选择合适的插件来实现数据源的灵活管理。

zjg 2670

mybatis-plus(多数据源配置)

多数据源配置

懒散的蜗牛 1万+

Dynamic DataSource 多数据源配置【 Springboot + DataSource + MyBatis Plus + Druid】

MybatisPlus多数据源配置主要解决的是多数据库连接和切换的问题。在一些大型应用中,由于数据量的增长或者业务模块的增多,可能需要访问多个数据库。这时,就需要配置多个数据源。

IT小郭的技术博客 1万+

Mybatis-plus配置多数据源

最近项目中需要查询不同的数据库的表,恰好Mybatis-plus支持多数据源,特此记录。

wl_Honest的博客 7823

MyBatis-Plus多数据源配置:轻松实现数据库切换

/ 设置权重// 70%的概率// 30%的概率@Override.sum();return ds;

m0_65382359的博客 6743

Mybatis Mybatis-plus配置多数据源,连接多数据库

工作的时候,遇到了需要将一个数据库的一些数据插入或更新到另一个数据库。一开始使用(这句sql语句的意思是将val1,val2值插入到TABLE表的col1和col2字段中,如果出现主键或唯一冲突,就进行更新,只将col1值更新为val1)进行数据的插入和更新。但是每次都要对着这一条sql语句进行修改,十分麻烦,就想着能否同时连接两个数据库进行业务处理。...

m0_67403073的博客 4508

Mybatis Plus配置多数据源

该项目主要描述了Mybatis Plus多数据源的配置和使用,其中详细记录的配置过程,整个过程从数据库表的创建到数据初始化都有详细的记录说明。另外,如果存在同一个表在多个数据源中都存在的情况,有一些注意事项,下面看文章通过例子说明。

yanzigejuly的博客 7601

多数据源事务集成-mybatis-plus

目前百度能搜索到的大部分是各自单独实现的aop以及多数据源的管理,使用起来比较复杂,而且做得也相对来说不是很完善,比如是否要考虑嵌套事务这种以及多数据源事务的支持方式,很多博主都没有涉及到,大多是简单的基于spring框架的拦截处理,自己实现不仅有不完善的缺点、可扩展性也是比较差的,后期版本维护升级或者支持更加复杂的功能就需要进行大改动以及全面的测试,风险系数也是蛮高的。mybatis-plus高版本在2021年下半年已经自己实现了在不借助外部协调者seata的情况下通过实现spring分布式事务的相关接口

zchlove137的博客 4052

Mybatis-Plus多数据源事务

Mybatis-Plus多数据源

ooaash的博客 5458

SpringBoot整合Mybatis-Plus、Druid配置多数据源

本文将介绍如何使用Spring Boot框架整合MyBatis和Druid多数据源,并包含以下内容: 概述Spring Boot、MyBatis和Druid 环境准备和依赖配置 配置多数据源 配置MyBatis 配置Druid连接池 使用MyBatis访问多数据源 代码实现和测试 通过本文的阅读,学习到如何使用Spring Boot框架整合MyBatis和Druid多数据源,能够帮助您更快速、更高效地开发企业级应用程序。

拾一二的博客 1万+

MyBatis多数据源配置与切换:实现动态数据源

在实际的应用场景中,我们经常需要使用多个数据源来存储不同的数据。例如,一个电商网站可能需要使用一个数据源来存储用户信息,另一个数据源来存储订单信息。在这种情况下,我们需要一种方法来动态地切换数据源,以便在不同的场景下使用不同的数据源。MyBatis是一个流行的Java持久化框架,它提供了一种简单的方式来访问数据库。在MyBatis中,我们可以使用多个数据源来存储不同的数据。本文将介绍如何在MyBatis中配置多个数据源,并动态地切换数据源。

AI天才研究院 879

MyBatis-Plus 高级功能 —— 多数据源配置

一、引言 在我们实际业务开发中,难以避免需要同时涉及多个数据库,可能一个API中所需要的数据,往往是包含了多个数据库中的数据, 这个时候我们就需要在项目运行中,切换数据源。 那为什么会有这篇文章呢,那是因为小编在使用mybatis-plus这个框架,明明一个多数据源配置很简单,但是网上其他博客着实太过于复杂了。 从数据源配置,每一个数据源配置一个config类,还有需要自己实现AOP的,当时小编就在想mybatis-plus是为简化而生,怎么搞这么复杂。 接下来不要眨眼,很快就实现了。 二、具体实

贱男 9578

STM32:TTL串口调试

TTL只需要两个线就可以完成两个设备之间的双向通信,一个发送电平的I/O称之为TX,与另一个设备的接收I/O口RX相互连接。两设备之间还需要连接地线(GND),这样两设备就有相同的0V参考电势。

superSmart_Dong的博客 5635

别再用Excel画波特图了!用LTspice免费仿真软件,5分钟搞定电路传递函数分析

本文介绍了如何利用LTspice免费仿真软件高效绘制波特图,解决传统Excel绘图效率低、精度不足的问题。通过详细的操作步骤和实战案例,展示LTspice在电路传递函数分析中的自动化计算、专业级精度和完整特性展示等优势,帮助工程师快速完成频率响应分析。

weixin_42524226的博客 460

mybatis plus多数据源实现

上面mybatis-spring3.0.3和mybatis3.5.14显示引入,mybatis-plus用的是mybatis-plus-spring-boot3-starter标识,用mybatis-plus-boot-starter应该也行但是我第一次试的时候不行,后面改成mybatis-plus-spring-boot3-starter就没问题了,再改回来也行了。安全起见还是用mybatis-plus-spring-boot3-starter吧。-- 根据 JDK 版本选择合适的依赖 -->

asfadsfdghtfhty的博客 1955

LLVM 编译器学习笔记之三十六-- 指令调度Instruction scheduling

1、参考Instruction scheduling in LLVM - 知乎,在中后端均存在指令调度 指令调度模型 2、在llvm12->llvm14 中Machine Instruction Scheduler有个patch增强了load/store指令的合并,也就是指令调度不仅仅只是改变指令的顺序,该优化类似gcc中的store-merge优化 .....................................................................

~ 飞 扬 的 天 空 ~ 5685

基于Mybatis及Mybatis-Plus的多数据源解决方案

本文主要介绍了基于Mybatis分包、基于Mybati-Plus Dynamic-Datasource实现多数据源的方案(文中附有源码链接),并探讨了多数据源本地事务、分布式事务的解决方案。

罗小爬的技术宝书 6635

〔重庆理工大学〕计算机组成原理课设报告--16位单周期CPU设计

本课程设计的实验平台为Altera Quartus II 软件和Altera Cyclone V Starter 工具箱。(1)Cyclone V是Altera FPGAs家族的一类,它面向低功耗应用。Cyclone V GX 5CGXFC5C6F27C7N 芯片有不同的转换器,按钮,LED灯,七段显示器,HDMI接口,SD卡读卡器以及其他链接等。Cyclone V GX 5CGXFC5C6F27C7N是Starter工具箱的重要组件。(2)测试台包含在测设备(DUT)和用于仿真的模拟输入。

Pretty Boy Fox的博客 1066

基于R语言的PLS算法实现解读

我们使用"pls"包来执行PLS回归,并提供了相应的源代码。在本文中,我们将详细解读基于R语言的PLS算法的实现过程,并提供相应的源代码。PLS算法的实现可以借助R语言中的"pls"包。该包提供了丰富的函数和工具,用于执行PLS回归、PLS-DA(PLS-Discriminant Analysis)和其他相关任务。除了执行PLS回归,"pls"包还提供了其他功能,例如PLS-DA(用于分类问题)和PLS变量选择等。上述代码将基于输入的X值,使用训练好的PLS模型进行预测,并返回预测结果。

TechWhizKid的博客 1043

MyBatis-Plus多数据源支持

通过 MyBatis-Plus 的多数据源支持,开发者可以轻松实现读写分离业务模块分离以及其他复杂的多数据源场景。通过简单的注解配置,动态数据源切换变得十分灵活和高效。

Flying_Fish_roe的博客 3739

ESP32设备驱动-AS5600磁性旋转位置传感器

AS5600 是一款可编程的 12 位高分辨率非接触式磁性旋转位置传感器。 AS5600可以作为磁性电位器或磁性编码器使用,具有出色的可靠性和耐用性。 与传统电位器/编码器相比,AS5600具有显着优势:高精度、非接触式、旋转角度无限制。 所有这些优点使其适用于非接触式角度测量应用,例如机器人手臂、云台、电机闭环控制、机床轴定位。

视觉与物联智能 2548

SpringBoot整合Mybatis-Plus+Druid实现多数据源

Spring Boot是一个基于Spring框架的开源Java开发框架,旨在简化Spring应用程序的开发、配置和部署。它提供了一种快速、敏捷的方式来构建独立的、生产级别的Spring应用程序,同时还提供了许多开箱即用的功能和工具,如自动配置、内嵌式Web容器、健康检查、监控和管理等。Mybatis-Plus是一个基于Mybatis的增强工具,它在Mybatis的基础上扩展了许多实用的功能,可以帮助开发人员更加高效地完成数据库操作,提高开发效率和代码质量。

FeelTouch Labs 2686

2020计算机专业保研夏令营面经:中科院计算所网数机试题目

计算所网络数据科学与技术重点实验室的第一阶段是机试。机试不限程序语言,要求提交源代码。

乔卿的博客 2957

14 Prompt 的边界:什么时候必须用 RAG 或微调

Prompt 不是万能解法。本文用“改输入、补知识、改模型”这条主线,讲清什么时候继续优化 Prompt,什么时候必须引入 RAG、工具调用或微调,帮助你避免用重技术掩盖轻问题。

老于的笔记的专栏 209
上一篇: AOP的切入点Pointcut中的execution表达式详解
下一篇: linux易忘命令(如:端口、进程、文件、内存、vim)持续更新
JavaWizard-M
博客等级 码龄6年 3159粉丝 148原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值