多数据源切换、读写分离-02

news2024/11/15 11:12:57
使用dynamic进行数据源切换、读写分离
特性
1、支持数据源分组 ,适用于多种场景纯粹多库读写分离一主多从混合模式。
2、支持数据库敏感配置信息 加密 ENC()。
3、支持每个数据库独立初始化表结构schema和数据库database。
4、支持无数据源启动,支持懒加载数据源(需要的时候再创建连接)。
5、支持自定义注解 ,需继承DS(3.2.0+)。
6、提供并简化对Druid,HikariCp,BeeCp,Dbcp2的快速集成。
7、提供对Mybatis-Plus,Quartz,ShardingJdbc,P6sy,Jndi等组件的集成方案。
7、提供 自定义数据源来源方案(如全从数据库加载)。
8、提供项目启动后 动态增加移除数据源方案。
9、提供Mybatis环境下的纯读写分离方案。
10、提供使用 spel动态参数 解析数据源方案。内置spel,session,header,支持自定义。
11、支持多层数据源嵌套切换 。(ServiceA >>> ServiceB >>> ServiceC)。
12、提供基于seata的分布式事务方案。 附:不支持原生spring事务。
13、提供本地多数据源事务方案。 附:不支持原生spring事务。
 
1、引入dynamic-datasource-spring-boot-starter。
  <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
        <version>3.5.0</version>
  </dependency>

2、配置数据源。

spring:
  datasource:
    dynamic:
      primary: master #设置默认的数据源或者数据源组,默认值即为master
      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      datasource:
        master:
          url: jdbc:mysql://xx.xx.xx.xx:3306/dynamic
          username: root
          password: 123456
        slave:
          url: jdbc:mysql://xx.xx.xx.xx:3307/dynamic
          username: root
          password: 123456
3、在实现类上使用 @DS 切换数据源。

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public int createUser(User user){
        SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String creation_date = dateFormat.format(System.currentTimeMillis());
        user.setCreation_date(creation_date);
        return userMapper.addUser(user);
    }

    @Override
    public int updateUser(int id, User user){
        user.setUserid(id);
        return userMapper.updateUser(user);
    }

    @Override
    public int deleteUser(int id){
        return userMapper.deleteUser(id);
    }

    @Override
    @DS("slave")
    public User queryUserById(int id){
        return userMapper.queryUserById(id);
    }

    @Override
    @DS("slave")
    public List<User> queryUserList(int pageNow, int pageSize){
        int pageNum = (pageNow-1)*pageSize;
        return userMapper.queryUserList(pageNum,pageSize);
    }
}
 

注:多数据源同步的问题还是要交给mysql进行。dynamic不能进行数据同步

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

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

相关文章

【已解决】pyecharts大屏点击Save Config没反应,无法保存chart_config.json

在使用pyecharts开发大屏时&#xff0c;临时大屏拖拽好之后&#xff0c;点击Save Config之后没反应&#xff0c;没有弹出json保存对话框。 报错现象&#xff1a; 利用Python的pyecharts库的Page组件开发可视化大屏时&#xff0c;无法点击Save Config按钮。 问题原因&#xff1…

sonarqube安装并配置CI/CD

sonarqube安装使用 目录 简介效果(配置在下面查看)官方文档环境准备配置compose-sonarqube.yml启动登录集成Gitlab 获取私钥sonarqube配置gitlab查看项目 配置 手动方式Gitlab CI/CD 自动检测 简介 SonarQube是一个开源的代码质量管理平台&#xff0c;用于对代码进行静态代…

Kong简介

Kong 是一个开源的云原生 API 网关和服务网格&#xff0c;它提供了强大的流量控制、请求转发、日志记录、认证和授权等功能。 一、Kong Consumer Kong Consumer 是 Kong API 网关中的一个重要概念&#xff0c;它代表使用你的 API 的最终用户或客户端。Consumer 的创建和配置可…

Spring AOP知识点详解

Spring AOP是 Spring最核心的能力&#xff0c;那到底什么是AOP呢&#xff0c;今天了不起带大家了解一下。 AOP是什么 AOP(Aspect Oriented Programming):面向切面编程&#xff0c;是OOP(面向对象编程)的一个延续&#xff0c;其和OOP一样&#xff0c;也是一种编程思想&#xff0…

在Linux下做性能分析3:perf

介绍 ftrace的跟踪方法是一种总体跟踪法&#xff0c;换句话说&#xff0c;你统计了一个事件到下一个事件所有的时间长度&#xff0c;然后把它们放到时间轴上&#xff0c;你可以知道整个系统运行在时间轴上的分布。 这种方法很准确&#xff0c;但跟踪成本很高。所以&#xff0…

有道云笔记迁移到自建服务器Joplin

当前有道云笔记各项业务开始逐渐向会员靠拢&#xff0c;如一开始不受限的多端同步现在非会员限制成了两个终端&#xff0c;估计以后会有越来越多的免费内容会逐渐的向会员转移&#xff0c;因此博主开始考虑自建服务器来搞一个云笔记服务端。 因博主已有黑群晖&#xff0c;并且有…

OK3588运行python程序对摄像头数据进行图像处理

OK3588运行python程序读取usb摄像头 硬件连接用工具测试验证摄像头工作正常python 读取usb摄像头并进行图像处理 硬件连接 把usb摄像头插入HOST的usb接口。 在串口终端运行 sudo v4l2-ctl --list-devices 如下图 当前的usb设备是 /dev/video74 用工具测试验证摄像头工作正常…

基于深度学习的高精度80类动物目标检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度80类动物目标检测识别系统可用于日常生活中或野外来检测与定位80类动物目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的80类动物目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YO…

#4. 背包

4030: 背包 题目内容 有 n n n 个物品&#xff0c;每个物品有大小 w i w_i wi​ 和价值 v i v_i vi​&#xff0c;再给定一个整数 k k k 和背包大小 m m m&#xff0c;对每个 1 ≤ i ≤ n − k 1 1 \le i \le n - k 1 1≤i≤n−k1&#xff0c;求出如果只能选择 i i …

Linux中makefile

第一个版本的makefile Makefile的依赖是从上至下的&#xff0c;换句话说就是目标文件是第一句里的目标&#xff0c;如果不满足执行依赖&#xff0c;就会继续向下执行。如果满足了生成目标的依赖&#xff0c;就不会再继续向下执行了。 Make会自动寻找依赖条件所用到的文件&…

uni-app的H5版本下载跨域问题

前端能正常访问图片&#xff0c;但无法下载 因为路径不经过业务代码&#xff0c;所以需要在nginx配置跨域 代码&#xff1a; add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods GET, POST, OPTIONS; add_header Access-Control-Allow-H…

【黑客】网络安全靠自学?你不要命了!

1️⃣网安现状 ❗本文面向所有 想要涉足网安领域 或 已经涉足但仍处在迷茫期 的伙伴&#xff0c;如果你月薪达到了3w&#xff0c;那么请你离开。 如果没有&#xff0c;希望你继续看下去&#xff0c;因为你人生的转折点将从这篇文章开始。 ✈️网络安全&#xff0c;一个近几年大…

路径规划算法:基于斑马优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于斑马优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于斑马优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法斑马…

Keil5新建51单片机demo工程模板

51单片机新建工程使用到的软件有keil5&#xff0c;首先安装好keil5软件&#xff0c;安装教程在:【Keil&#xff08;C51&#xff09;介绍、下载、安装、注册与2个补丁】Keil&#xff08;C51&#xff09;介绍、下载、安装与2个补丁_西晋的no1的博客-CSDN博客 一、新建一个空工程 …

【QT】——基础窗口类QMainWindow

目录 1.概念 2.菜单栏——QMenuBar 3.工具栏 添加QAction 工具栏属性设置 5.状态栏——QStatusBar 6 停靠窗口 属性设置 1.概念 QMainWindow 是标准基础窗口中结构最复杂的窗口&#xff0c;QMainWindow继承QWidget&#xff0c;他在QWidget的基础上提供了菜单栏&#…

网络编程 socket

目录 网络编程 套接字&#xff08;socket&#xff09;1. 认识端口号2. TCP协议3. UDP协议4. 网络字节序列5. 常见的套接字6. socket编程接口6.1 socket常见APIsocket函数recvfrom函数sendto函数read函数 从tcp socket中读取接收数据 6.2 sockaddr结构6.3 地址转换函数6.4 udp s…

input输入日期时间,自动格式化组件/工具

input输入日期时间&#xff0c;自动格式化组件/工具 组件/工具使用说明 只能输入日期时间&#xff0c;不能选择日期时间格式 yyyy-MM-dd HH:mm:ss基于VUE框架输入效果见下图 组件/工具解决的痛点 组件库日期时间组件&#xff0c;选日期时间很花时间 例如想快速得到 2021-1…

OJ练习第137题——有序链表转换二叉搜索树

有序链表转换二叉搜索树 力扣链接&#xff1a;109. 有序链表转换二叉搜索树 题目描述 给定一个单链表的头节点 head &#xff0c;其中的元素 按升序排序 &#xff0c;将其转换为高度平衡的二叉搜索树。 本题中&#xff0c;一个高度平衡二叉树是指一个二叉树每个节点 的左右…

[golang gin框架] 40.Gin商城项目-微服务实战之Captcha验证码微服务

本次内容需要 gin框架基础知识, golang微服务基础知识才能更好理解 一.Captcha验证码功能引入 在前面,讲解了微服务的架构等,这里,来讲解前面商城项目的 Captcha验证码 微服务 ,captcha验证码功能在前台,后端 都要用到 ,可以把它 抽离出来 ,做成微服务功能 编辑 编辑 这个验证码…