当前位置: 首页 > news >正文

SpringBoot+Mybatis-Plus多数据源使用

1、简介

在实际开发中项目很容易就遇到使用多数据源的情形,比如:在新增数据时除了给自己的库保留一份,还需要同步到别人的库;转移程序需要将A库的数据转到B库等等。常见的使用Mybatis-Plus配置多数据源方式有两种:一种是通过java config的方式手动配置两个数据源,另一种方式便是使用mybatis-plus-dynamic。这里介绍下mybatis-plus-dynamic的使用。

2、实战

2.1 pom.xml引入依赖

		<!-- mybatis-plus配置不同数据源 需要引入的包 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.3.2</version>
        </dependency>

2.2 application-dev.yml添加配置

application.yml中配置不同的yml,启动不同的服务环境比如dev,sit,pro等

server:
  port: 8086

spring:
  autoconfigure:
    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
  datasource:
    dynamic:
      primary: mysql1 #设置默认数据库源
      strict: false #严格匹配数据源,默认为false,true未匹配到指定数据库时抛异常,false使用默认数据源
      datasource:
        mysql1:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/demo1?serverTimezone=UTC
          username: root
          password: root1234
#          type: com.alibaba.druid.pool.DruidDataSource
        mysql2:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/demo2?serverTimezone=UTC
          username: root
          password: root1234
#          type: com.alibaba.druid.pool.DruidDataSource

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
  #configuration:
    #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl   #控制台打印sql开关
  mapper-locations:
    classpath: mapper/*.xml
    type-aliases-package: com.example.demo.entity
#showSql
logging:
  level:
    com:
      example:
        mapper : error

由于本机只安装了MySQL数据库,所以创建了两个不同名字的数据库用于模拟表示不同数据库场景。配置在dynamic下进行,其中primary必须配置,用于选择默认的数据源,这里mysql1是默认数据库。

2.3 使用

使用主要是通过@DS注解进行配置选择数据源,并且可以在类上进行配置。如果不使用@DS注解的类则使用primary配置的默认数据源。

@DS("mysql1")
@Repository("UserMapper")
public interface UserMapper extends BaseMapper<User> {
}
@DS("mysql2")
@Repository("User2Mapper")
public interface User2Mapper extends BaseMapper<User2> {
}

2.4 测试

@SpringBootTest
class DemoSpringMybatisplusApplicationTests {

    @Autowired
    UserMapper userMapper;
    @Autowired
    User2Mapper user2Mapper;

    @Test
    void test() {
        User user = userMapper.selectById(1);
        System.out.println("执行了数据源mysql1数据源:"+user.toString());
        User2 user2 = user2Mapper.selectById(1);
        System.out.println("执行了数据源mysql2数据源:"+user2.toString());
    }
}

2.5 测试结果

请添加图片描述

3、项目结构和代码

源码下载 demo-springboot-mybatisplus
在这里插入图片描述
参考资料
https://blog.csdn.net/jike11231/article/details/120722718
https://blog.csdn.net/weixin_44690195/article/details/108080078
https://blog.csdn.net/qq_38353700/article/details/118583828
https://blog.csdn.net/qq_38550836/article/details/103436898

相关文章:

  • Colab-免费GPU算力
  • 【CH559L单片机】串口下载程序说明
  • CMake中macro的使用
  • windows利用msys2安装minGW64
  • (42)STM32——LCD显示屏实验笔记
  • 全国青少年软件编程等级考试标准Python(1-6级)
  • Java语法基本概念
  • 一文搞懂CSS盒子模型
  • 【PAT甲级】1123 Is It a Complete AVL Tree
  • PWM实验(控制蜂鸣器,风扇,马达)
  • MySQL 从入门到入狱 rm - rf /* 咳咳~ 到精通
  • 回溯算法 - 二叉树中和为某一值的路径 字符串的排列
  • 纯C实现的贪吃蛇(无EasyX,详解)
  • JAVA计算机毕业设计SUNHome家政服务管理平台Mybatis+系统+数据库+调试部署
  • 【项目管理】Java离线版语音识别-语音转文字
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • bearychat的java client
  • co.js - 让异步代码同步化
  • LeetCode29.两数相除 JavaScript
  • Lucene解析 - 基本概念
  • Material Design
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Protobuf3语言指南
  • Python socket服务器端、客户端传送信息
  • react-native 安卓真机环境搭建
  • ReactNative开发常用的三方模块
  • Vultr 教程目录
  • 阿里云Kubernetes容器服务上体验Knative
  • 汉诺塔算法
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 微信小程序开发问题汇总
  • 小试R空间处理新库sf
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • hi-nginx-1.3.4编译安装
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​ubuntu下安装kvm虚拟机
  • ​渐进式Web应用PWA的未来
  • #includecmath
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (论文阅读30/100)Convolutional Pose Machines
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (五)IO流之ByteArrayInput/OutputStream
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)为C# Windows服务添加安装程序
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net framework profiles /.net framework 配置
  • .NET 中使用 Mutex 进行跨越进程边界的同步