企业网站硬件设计,网站视觉优化的意义,凡客是什么品牌,wordpress当地时间一、前言#x1f525; 环境说明#xff1a;Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE 正常情况下我们在开发系统的时候都是使用一个数据源#xff0c;但是由于有些项目同步数据的时候不想造成数据库io消耗压力过大#xff0c;便会一个项目对应多个数据源…一、前言 环境说明Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE 正常情况下我们在开发系统的时候都是使用一个数据源但是由于有些项目同步数据的时候不想造成数据库io消耗压力过大便会一个项目对应多个数据源即就会有个问题Springboot 配置db都是默认加载数据源连接连接池默认配置但是配置多个数据库url这该怎么实现呢 不用担心我们就是为了解决而写的不用复杂的实现方式什么Springbootmybatis在配置文件中配置多个数据源然后mapper指定连接配置等不不需要我嫌太麻烦了今天我就要给你们安利它 **dynamic-datasource-spring-boot-starter一个基于springboot的快速集成多数据源的启动器开箱即用超级方便。**接下来我就为大家一一讲解虽然配置很简单但是坑也比较多bug菌都为大家给淌过啦你们就直接直接拿去用即可 二、dynamic-datasource-spring-boot-starter
一、简介 dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。 其支持 Jdk 1.7, SpringBoot 1.4.x 1.5.x 2.x.x。 二、特性
支持 数据源分组 适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。支持数据库敏感配置信息 加密 ENC()。支持每个数据库独立初始化表结构schema和数据库database。支持无数据源启动支持懒加载数据源需要的时候再创建连接。支持 自定义注解 需继承DS(3.2.0)。提供并简化对DruidHikariCpBeeCp,Dbcp2的快速集成。提供对Mybatis-PlusQuartzShardingJdbcP6syJndi等组件的集成方案。提供 自定义数据源来源 方案如全从数据库加载。提供项目启动后 动态增加移除数据源 方案。提供Mybatis环境下的 纯读写分离 方案。提供使用 spel动态参数 解析数据源方案。内置spelsessionheader支持自定义。支持 多层数据源嵌套切换 。ServiceA ServiceB ServiceC。提供 **基于seata的分布式事务方案。提供 本地多数据源事务方案。
三、使用方法
1、老规矩先引依赖包。引入dynamic-datasource-spring-boot-starter
!--配置多数据源--
dependencygroupIdcom.baomidou/groupIdartifactIddynamic-datasource-spring-boot-starter/artifactIdversion3.5.0/version
/dependency2、配置数据源。
spring:datasource:dynamic:primary: master #设置默认的数据源或者数据源组,默认值即为masterstrict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源datasource:master:driver-class-name: com.mysql.cj.jdbc.Driver #3.2.0开始支持SPI可省略此配置url: jdbc:mysql://localhost:3306/springboot_db?serverTimezoneGMT%2B8useUnicodetruecharacterEncodingutf-8username: rootpassword: 123456slave_1:driver-class-name: com.mysql.cj.jdbc.Driver #3.2.0开始支持SPI可省略此配置url: jdbc:mysql://127.0.0.1:3306/test_db2?setUnicodetruecharacterEncodingutf8username: rootpassword: 123456拓展同时也支持多主多从多种不同库及混合配置。 3、实战演示
我们先来指定配置环境 配置好配置环境后先启动下项目查看库是否都正常连接。如下控制台启动打印的日志表示两库都正常连接。 接着我们先创建两个实体分别对应db1和db2的user表 接着写一个controller类 接着接口实现层 这里我就为大家讲解一下了。
数据源切换使用的是提供的 DS 注解。
其中DS 可以注解在方法上或类上同时存在就近原则 方法上注解 优先于 类上注解。(所以你们看上边注解在类上使用的是主库但是基于下边某个方法就是制定了从库但是我这样放一起是为了给大家看比较一般会直接分类写不会一个类上出现多个数据源。) 注DS(dsName) dsName可以为组名也可以为具体某个库的名称。 4、访问接口查看结果。
先是访问接口1localhost:8888/dbUser/query-users-for-db-one
如下请求结果大家请看成功拿到了db1库中的数据。 再请求下接口2:localhost:8888/dbUser/query-users-for-db-two
如下请求结果大家请看成功拿到了db2库中的数据。 再做个测试我们把db1与db2中的数据同时返回看看能否成功
我们先写两接口然后分别将数据用map返回 请求结果如下 然后给大家看下数据库数据以免被大家说是同一个库中的数据。 好啦以上就是同mysql数据源的配置流程及实例演示啦如果还有啥不清楚的小伙伴欢迎下方留言。接着就是针对后边两种配置方式就自行尝试啦看上去都是一样的。
有需求的小伙伴看完之后使用起来是不是很简单压根不需要用传统的mybatis配置多个连接器mybatis-plus都帮我们封装好啦开箱即用。