SpringBoot+MybatisPlus+dynamic-datasources实现连接Postgresql和mysql多数据源

场景

dynamic-datasource-spring-boot-starter实现动态数据源Mysql和Sqlserver:

dynamic-datasource-spring-boot-starter实现动态数据源Mysql和Sqlserver_dynamic-datasource-spring-boot-starter mysql sqlse-CSDN博客

SpringBoot中整合MybatisPlus快速实现Mysql增删改查和条件构造器:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/135646024

在上面的基础上实现同时连接mysql和postgresql多数据源。

注:

博客:
霸道流氓气质-CSDN博客

实现

1、添加依赖

添加postgresql的依赖

        <dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId></dependency>

添加mysql驱动

        <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>

添加多数据源dynamic-datasource的依赖

        <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.2.1</version></dependency>

添加mybatisplus的依赖

        <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency>

完整pom依赖

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--MySQL驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.2.1</version></dependency>

2、修改application.yml配置文件,添加多数据源的配置

spring:datasource:dynamic:primary: master #设置默认的数据源或者数据源组,默认值即为masterstrict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源datasource:master:url:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8username: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driverdbcp2:min-idle: 5                                # 数据库连接池的最小维持连接数initial-size: 5                            # 初始化连接数max-total: 5                               # 最大连接数max-wait-millis: 150                       # 等待连接获取的最大超时时间pg:url: jdbc:postgresql://127.0.0.1:5432/testusername: postgrespassword: 123456driver-class-name: org.postgresql.Driverdbcp2:min-idle: 5                                # 数据库连接池的最小维持连接数initial-size: 5                            # 初始化连接数max-total: 5                               # 最大连接数max-wait-millis: 150                       # 等待连接获取的最大超时时间

3、postgresql中新建表t_student

并新建实体类

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "t_student")
public class Student implements Serializable {private static final long serialVersionUID = -5514139686858156155L;private Integer id;private String name;private Integer age;private String address;}

4、新建student的mapper

import com.badao.demo.config.DataSourceOfPG;
import com.badao.demo.entity.Student;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;@Repository
@DataSourceOfPG
public interface StudentMapper extends BaseMapper<Student> {}

注意这里的@DataSourceOfPG是自定义注解,你也可以直接使用

@DS("pg")

这里的pg与上面yml中数据源名称对应,为防止pg修改导致多处修改,这里的dynamic datasource的 @DS注解使用

自定义注解实现。

import com.baomidou.dynamic.datasource.annotation.DS;
import java.lang.annotation.*;@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@DS("pg")
public @interface DataSourceOfPG {}

关于自定义注解可以参考其他文章

Java中通过反射+自定义注解判断对象中部分属性是否为空,返回为空字段的名称或自定义含义:

Java中通过反射+自定义注解判断对象中部分属性是否为空,返回为空字段的名称或自定义含义_java判断空值注解-CSDN博客

SpringBoot中通过自定义Jackson注解实现接口返回数据脱敏:

SpringBoot中通过自定义Jackson注解实现接口返回数据脱敏_springboot 自定义 jacksonfilter-CSDN博客

user表参考上面博客

实体类

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "t_user")
public class User implements Serializable {private static final long serialVersionUID = -5514139686858156155L;private Integer id;private Integer userId;private String name;private Integer age;@TableField(exist = false)private String address;}

mapper为

@Repository
public interface UserMapper extends BaseMapper<User> {}

5、编写单元测试测试从两个数据源中获取数据

@SpringBootTest
class PGTest {@Autowiredprivate StudentMapper studentMapper;@Autowiredprivate UserMapper userMapper;@Testvoid test1() {List<Student> students = studentMapper.selectList(new LambdaQueryWrapper<>());System.out.println(students);List<User> users = userMapper.selectList(new LambdaQueryWrapper<>());System.out.println(users);}}

单元测试运行结果

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

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

相关文章

利用docker的LNMP

目录 服务器环境 任务需求 服务搭建 Nginx Mysql Php 启动 wordpress 服务 服务器环境 容器 操作系统 IP地址 主要软件 nginx CentOS 7 172.20.0.10 Docker-Nginx mysql CentOS 7 172.20.0.20 Docker-Mysql php CentOS 7 172.2…

Docker ubuntu apt-get更换国内源解决Dockerfile构建速度过慢

1. 问题 dockerfile中 使用ubuntu 镜像 执行 RUN apt-get -q update && apt-get -q install -y 更新巨慢 2. 解决 使用国内的镜像源即可解决问题&#xff0c;注意如果使用的 包比较冷门 或者国内镜像网站没同步过来 可能就下载不到镜像 在dockerfile中 执行安装包命…

YoloV8改进策略:Agent Attention|Softmax与线性注意力的融合研究|有效涨点|代码注释与改进|全网首发(唯一)

摘要 涨点效果:在我自己的数据集上,mAP50 由0.986涨到了0.991,mAP50-95由0.737涨到0.753,涨点明显! 本文提出了一种新型的注意力机制——Agent Attention,旨在平衡计算效率和表示能力。该机制在传统的注意力模块中引入了额外的agent tokens A,这些agent tokens首先为q…

详解ISIS动态路由协议

华子目录 前言应用场景历史起源ISIS路由计算过程ISIS的地址结构ISIS路由器分类ISIS邻居关系的建立P2PMA ISIS中的DIS与OSPF中DR的对比链路状态信息的交互ISIS的最短路径优先算法&#xff08;SPF&#xff09;ISIS区域划分ISIS区域间路由访问原理ISIS与OSPF的不同ISIS与OSPF的术语…

[HarmonyOS]第一课:从简单的页面开始

判断题 1. 在Column容器中的子组件默认是按照从上到下的垂直方向布局的&#xff0c;其主轴的方向是垂直方向&#xff0c;在Row容器中的组件默认是按照从左到右的水平方向布局的&#xff0c;其主轴的方向是水平方向。 答&#xff1a;正确(True) 2. List容器可以沿水平方向排列…

iOS和安卓端个人踩坑史

本公司不提供测试机&#xff0c;借手机是开发测试中最麻烦的事 iOS可行组 1、iOS可以播放视频无声音&#xff0c;Andorid有声音 当时做了个远程视频连接项目&#xff0c;使用了jitsi第三方视频服务&#xff0c;iOS没有加dom.play()导致无法接收声音 2、iOS可以长按保存图片…

Asp .Net Core 系列:集成 Ocelot+Consul实现网关、服务注册、服务发现

什么是Ocelot? Ocelot是一个开源的ASP.NET Core微服务网关&#xff0c;它提供了API网关所需的所有功能&#xff0c;如路由、认证、限流、监控等。 Ocelot是一个简单、灵活且功能强大的API网关&#xff0c;它可以与现有的服务集成&#xff0c;并帮助您保护、监控和扩展您的微…

如何安装下载激活MathType?2024最新免费MathType许可证

第一步&#xff1a;请先从这里下载安装MathType&#xff1a; 第二步&#xff1a;下载完成后&#xff0c;双击下载的MathType Desktop安装程序文件。 在Mac上&#xff0c;这将在单独的窗口中打开它&#xff0c;因此在该窗口中双击“ MathType Desktop Installer…”以运行安装…

TQ7.2WS acid,Tide Quencher 7.2WS 酸,能够降低荧光信号的强度

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;Tide Quencher 7.2WS acid&#xff0c;TQ7.2WS acid&#xff0c;Tide Quencher 7.2WS 酸 &#xff0c;TQ7.2WS 酸 一、基本信息 产品简介&#xff1a;The fluorescence quenching agent Tide Quencher 7.2WS acid h…

win10 系统维护

电脑崩溃之后&#xff0c;我发现维护系统还是很重要的一件事情。比如软件尽可能装D盘&#xff0c;C盘&#xff08;系统盘&#xff09;尽可能不要存储数据等等。接着&#xff0c;就是如何让系统更易用&#xff0c;因此我在这里分享我的使用方式&#xff0c;以后就可以随便重装系…

微信小程序防止截屏录屏

一、使用css添加水印 使用微信小程序原生的view和css给屏幕添加水印这样可以防止用户将小程序内的隐私数据进行截图或者录屏分享导致信息泄露&#xff0c;给小程序添加一个水印浮层。这样即使被截图或者拍照&#xff0c;也能轻松地确定泄露的源头。效果图如下&#xff1a; 代码…

LeetCode刷题---基本计算器

解题思路&#xff1a; 根据题意&#xff0c;字符串中包含的运算符只有和- 使用辅助栈的方法来解决该问题 定义结果集res和符号位sign(用于判断对下一数的加减操作),接着对字符串进行遍历。 如果当前字符为数字字符&#xff0c;判断当前字符的下一个字符是否也是数字字符&#x…

计算机网络-NAT网络地址转换

今天来回顾下之前所学的知识&#xff0c;将它们串联起来进行巩固。一开始了解了IP编址进行IP设置和划分网段&#xff1b;学习了二层以太网交换&#xff0c;了解了二层通信基础&#xff1b;学习了路由基础知识&#xff0c;大致了解到了路由是什么&#xff1f;静态路由和动态路由…

【MIdjourney】几种独特的艺术风格

1.合成器波(Synthwave) Synthwave是一种音乐风格&#xff0c;起源于20世纪80年代电子音乐和电影的复古元素。这种音乐风格通常包括合成器音乐、电子鼓声和强烈的电子声效&#xff0c;以模拟80年代电影和视频游戏的声音。Synthwave的特点包括浓厚的合成器声音、强烈的节奏和对复…

工商业屋顶光伏项目如何操作?

鹧鸪云 随着可再生能源的日益重要&#xff0c;工商业屋顶光伏项目已成为许多企业实现绿色能源转型的重要途径。本文将详细介绍工商业屋顶光伏项目的操作流程&#xff0c;帮助企业更好地实施这一项目。 一、项目前期准备 需求分析&#xff1a;明确企业的能源需求&#xff0c;评…

JNI笔记

JNI笔记 背景Demo代码JNI.javaMainActivity.javaAndroid.mkApplication.mkcom_stone_javacallc_JNI.hjavacallc.cbuild.gradle 背景 Demo代码 代码结构 JNI.java package com.stone.javacallc;/*** Created by stoneWang* Created on 2024/1/16* java调用C*/ public class …

mysql从库重新搭建的流程

背景 生产环境上的主从集群&#xff0c;因为一些异常原因&#xff0c;导致主从同步失败。现记录下通过重做mysql从库的方式来解决&#xff0c;重做过程不影响主库。 步骤 1、在主库上的操作步骤 备份主库所有数据&#xff0c;并将dump.sql文件拷贝到从库/tmp目录 mysqldump …

【车载HMI开发工具--EB GUIDE介绍】

EB GUIDE 是作为当今的汽车内一些最佳行业用户界面的技术。利用 EB GUIDE&#xff0c;您可以创建最佳的信息娱乐系统和仪表板的人机交互界面。EB GUIDE 不仅仅是一个工具&#xff0c;它还能支持汽车软件开发过程&#xff0c;从而创造出世界一流的汽车 HMI。 优点 在开发过程中…

C# 图解教程 第5版 —— 第23章 异常

文章目录 23.1 什么是异常23.2 try 语句23.3 异常类23.4 catch 子句23.5 异常过滤器23.6 catch 子句段23.7 finally 块23.8 为异常寻找处理程序23.9 进一步搜索23.9.1 一般法则23.9.2 搜索调用栈的示例&#xff08;*&#xff09; 23.10 抛出异常23.11 不带异常对象的抛出23.12 …

优先看我的博客:工控机 Ubuntu系统 输入密码登录界面后界面模糊卡死,键盘鼠标失效(不同于其他博主的问题解决方案,优先看我的博客。)

工控机Ubuntu 输入密码登录界面后界面模糊卡死&#xff0c;键盘鼠标失效 &#xff08;不同于其他博主的问题解决方案&#xff0c;工控机Ubuntu的系统 优先看我的博客。&#xff09; 系统版本&#xff1a;ubuntu18.04 主机&#xff1a;工控机 应用场景&#xff1a;电力系统巡…