Springboot实现数据库读写分离的一款框架

1. 前言

前篇博客介绍了用基本的方式做多数据源,可以应对一般的情况,但是遇到一些复杂的情况就需要扩展下功能了,比如:动态增减数据源、数据源分组,纯粹多库,读写分离一主多从,从其他数据库或者配置中心读取数据源等等。其实就算没有这些需求,使用此款框架实现多数据源也比之前要便捷,快速的多

2. 框架简介

dynamic-datasource-spring-boot-starter 是一个基于 Springboot 的快速集成多数据源的启动器

文档:https://github.com/baomidou/dynamic-datasource-spring-boot-starter
文档:https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter

它跟 mybatis-plus 是一个生态圈里的,都是由苞米豆团队出品,很容易集成 mybatis-plus

3. 基本使用

3.1. 框架说明

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

3.2. 与 Springboot 的整合

3.2.1. 数据准备

  • Springboot 版本:2.0.6.RELEASE
  • MySQL 版本:5.7

分别创建数据库 test1,test2,数据库表均为 goods,数据不相同

CREATE TABLE `goods` (
  `goodsId` bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
  `goodsName` varchar(500) NOT NULL DEFAULT '' COMMENT 'name',
  `subject` varchar(200) NOT NULL DEFAULT '' COMMENT '标题',
  `price` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '价格',
  `stock` int(11) NOT NULL DEFAULT '0' COMMENT 'stock',
  PRIMARY KEY (`goodsId`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COMMENT='商品表';

test1 数据库数据如下
在这里插入图片描述
test2 数据库数据如下
在这里插入图片描述

3.2.2. 引入依赖

至于其他依赖,不再赘述

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

3.2.3. Springboot 配置文件

配置文件详情可以参考官方文档

server.port=8080

#设置test1为主数据源
spring.datasource.dynamic.primary=master
#test1主数据源配置
spring.datasource.dynamic.datasource.master.url=jdbc:mysql://127.0.0.1:3306/test1?characterEncoding=utf8&useSSL=false&autoReconnect=true&serverTimezone
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值