MyBatis-Plus 集成动态多数据源
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis-Plus 集成动态多数据源相关的知识,希望对你有一定的参考价值。
参考技术A 这里使用的是dynamic-datasource-spring-boot-starter ,它是一个基于springboot的快速集成多数据源的启动器。1.首先在pom文件引入dynamic-datasource-spring-boot-starter
2.application.yml配置文件内容如下:
上面的配置中从dynamic开始是有关多数据源的配置,primary用来配置主数据源也叫默认数据源,它的默认值是master,因此,如果不指定primary的话一定要有名为master的数据源。strict 是用来配置是否启用严格 模式,如果为true表示启用,此时如果没有匹配的数据源会抛出异常,如果为false则会使用默认数据源。datasource下面就是配置多数据源的信息了。
后面的mybatis-plus配置我主要是用来说明集成这个不会对mybatis-plus对配置产生影响,该怎么用mybatis-plus就继续怎么用。
3.使用@DS("要切换的数据源"),上面配置的test可以使用@DS("test")切换数据源
1.注解添加在dao.mapper上无效
2.注解添加到interface Service类上无效
3.注解添加到interface Service方法上无效
那么,此注解应该如何使用呢?
添加@DS注解到实现类或者实现类的方法上才可以
当注解添加到类上,意味着此类里的方法都使用此数据源;
当注解添加到方法上时,意味着此方法上使用的数据源优先级高于其他一切配置
常见问题:
1.不能使用事务,否则数据源不会切换,使用的还是是第一次加载的数据源 。
删除 操作多数据源的方法或者类、接口 上的 注解 @Transactional() 即可。
2.第一次加载的数据源之后,第二次(第三次...)操作其它数据源,如果数据源不存在,使用的还是第一次加载的数据源
3.数据源名称最好不要包含下滑线,下滑线的数据源切换不了
拓展-传播机制
MyBatis-Plus 多数据源配置
参考技术A一,引言
在我们实际业务开发中,有时需要同时涉及多个数据库, 可能一个 API 中所需要的数据,往往是包含了多个数据库中的数据,这个时候我们就需要在项目运行中,切换数据源。
二,具体实现
步骤一:我们先需要引入maven配置,版本可自选。dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。
步骤二:多数据源配置,需要注意的后面都有写注释。
步骤三:步骤三就可以直接使用啦,真的是太方便了, @DS 可以注解在方法上或类上, 同时存在就近原则 方法上注解 优先于 类上注解 。
官方建议:
1,本框架只做 切换数据源 这件核心的事情,并不限制你的具体操作,切换了数据源可以做任何CRUD。
2,配置文件所有以下划线 _ 分割的数据源 首部 即为组的名称,相同组名称的数据源会放在一个组下。
3,切换数据源可以是组名,也可以是具体数据源名称。组名则切换时采用负载均衡算法切换。
4,默认的数据源名称为 master ,你可以通过 spring.datasource.dynamic.primary 修改。
方法上的注解优先于类上注解。
5,强烈建议只在service的类和方法上添加注解,不建议在mapper上添加注解。
以上是关于MyBatis-Plus 集成动态多数据源的主要内容,如果未能解决你的问题,请参考以下文章
mybatis-plus 动态数据源读写分离 + shardingJDBC分库分表
springboot、mybatis-plus、Druid多数据源环境搭建