前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MyBatisPlus实现多数据源切换

MyBatisPlus实现多数据源切换

作者头像
AI码师
发布2022-09-23 11:41:22
9180
发布2022-09-23 11:41:22
举报

背景

在项目开发过程中,我们普遍用到的都是单数据源,即所有DB操作的都是同一个数据库。那么当我们想要同时操作多个数据库的时候,应该怎么做呢?

我们有可能一时无法下手,但是好在我们用的是MyBatisPlus,它已经替我们想到了,天然支持多数据源,我们需要做的就是定义你需要的数据源,然后通过注解标明你当前的DB操作是基于哪个数据库就ok了,好了,现在我们就开始吧。

引入依赖

代码语言:javascript
复制
        <!-- https://mvnrepository.com/artifact/com.baomidou/dynamic-datasource-spring-boot-starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>

配置数据源

代码语言:javascript
复制
spring:
  datasource:
    dynamic:
      primary: master #设置默认的数据源或者数据源组,默认值即为master
      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      datasource:
        master:
          url: jdbc:mysql://192.168.64.2:3306/mybatis-plus
          username: root
          password: root
          driver-class-name: com.mysql.jdbc.Driver # 3.2.0开始支持SPI可省略此配置
        slave:
          url: jdbc:mysql://192.168.64.2:3306/mybatis-plus2
          username: root
          password: root
          driver-class-name: com.mysql.jdbc.Driver

使用注解

代码语言:javascript
复制
@Service
public class ManageUserServiceImpl extends ServiceImpl<ManageUserMapper, ManageUser> implements IManageUserService {

    @Override
    @DS("")
    public ManageUser getFromMybatisPlusDB() {
        return baseMapper.selectOne(lambdaQuery().getWrapper());
    }

    @Override
    @DS("slave")
    public ManageUser getFromMybatisPlus2DB() {
        return baseMapper.selectOne(lambdaQuery().getWrapper());
    }
}

编写测试代码

代码语言:javascript
复制
    @Test
    public void testDynamicDataSource(){
        ManageUser fromMybatisPlus2DB = manageUserServiceImpl.getFromMybatisPlus2DB();
        log.info(fromMybatisPlus2DB.getUserName());
        ManageUser fromMybatisPlusDB = manageUserServiceImpl.getFromMybatisPlusDB();
        log.info(fromMybatisPlusDB.getUserName());
    }

看结果

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乐哥聊编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 引入依赖
  • 配置数据源
  • 使用注解
  • 编写测试代码
  • 看结果
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档