首页 > 其他分享 >MyBatisPlus 多数据源动态切换

MyBatisPlus 多数据源动态切换

时间:2022-11-18 22:58:56浏览次数:75  
标签:MyBatisPlus 数据源 boot version 切换 mysql org com

一、官方文档

https://baomidou.com/pages/a61e1b/#%E6%96%87%E6%A1%A3-documentation

二、操作步骤

1、引入依赖

版本号在下面 懒得单独复制了 一起贴出来了

       <!-- Dynamic-DataSource多数据源依赖 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>${dynamic.version}</version>
        </dependency>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>io.zeal</groupId>
    <artifactId>generator-tools</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <description>快速构建工具</description>


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.6.RELEASE</version>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <mybatisplus.version>3.3.1</mybatisplus.version>
        <druid.version>1.1.13</druid.version>
        <commons.lang.version>2.6</commons.lang.version>
        <commons.io.version>2.5</commons.io.version>
        <commons.configuration.version>1.10</commons.configuration.version>
        <fastjson.version>1.2.60</fastjson.version>
        <velocity.version>1.7</velocity.version>
        <pagehelper.spring.boot.version>1.2.5</pagehelper.spring.boot.version>
        <mysql.version>8.0.17</mysql.version>
        <oracle.version>11.2.0.3</oracle.version>
        <lombok.version>1.18.24</lombok.version>
        <dynamic.version>3.5.1</dynamic.version>
        <poi.version>4.0.1</poi.version>
        <ooxml.version>4.0.1</ooxml.version>
        <schemas.version>4.0.1</schemas.version>

    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatisplus.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>com.baomidou</groupId>
                    <artifactId>mybatis-plus-generator</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- Dynamic-DataSource多数据源依赖 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>${dynamic.version}</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>${druid.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>${commons.lang.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>${commons.io.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-configuration</groupId>
            <artifactId>commons-configuration</artifactId>
            <version>${commons.configuration.version}</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${fastjson.version}</version>
        </dependency>
        <dependency>
            <artifactId>velocity</artifactId>
            <groupId>org.apache.velocity</groupId>
            <version>${velocity.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>${poi.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>${ooxml.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>${schemas.version}</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>${pagehelper.spring.boot.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis-spring</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- mysql驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
        <!-- oracle驱动 -->
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>${oracle.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2、数据源配置

# mysql
spring:
  datasource:
    dynamic:
      primary: master #设置默认的数据源或者数据源组,默认值即为master
      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      datasource:
        master:
          url: jdbc:mysql://127.0.0.1:3306/zeal_acl?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
          username: root
          password: root
          driverClassName: com.mysql.cj.jdbc.Driver
        slave_1:
          url: jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
          username: root
          password: root
          driverClassName: com.mysql.cj.jdbc.Driver
        slave_2:
         url: jdbc:mysql://127.0.0.1:3306/huas?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
         username: root
         password: root
         driverClassName: com.mysql.cj.jdbc.Driver
        slave_3:
          url: jdbc:mysql://127.0.0.1:3306/huas?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
          username: root
          password: root
          driverClassName: com.mysql.cj.jdbc.Driver
        slave_4:
          url: jdbc:mysql://127.0.0.1:3306/huas?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
          username: root
          password: root
          driverClassName: com.mysql.cj.jdbc.Driver

3、使用 @DS 切换数据源。

@DS 可以注解在方法上或类上,同时存在就近原则 方法上注解 优先于 类上注解。

@Service
@DS("slave")
public class UserServiceImpl implements UserService {

  @Autowired
  private JdbcTemplate jdbcTemplate;

  public List selectAll() {
    return  jdbcTemplate.queryForList("select * from user");
  }
  
  @Override
  @DS("slave_1")
  public List selectByCondition() {
    return  jdbcTemplate.queryForList("select * from user where age >10");
  }
}

4、踩坑点

如果在同一个service 中   一个 方法 想调用 另外2个方法 且另外2个方法上标注的是不同的数据源配置,这样是查不出来了的   改进:一个方法调用另外一个service的方法就查的出来

5、测试

查第一个数据源的表

 

 查第三个数据源的表

 

 SUCCESS!!!!!    非常强大

 

标签:MyBatisPlus,数据源,boot,version,切换,mysql,org,com
From: https://www.cnblogs.com/mangoubiubiu/p/16905166.html

相关文章

  • Druid动态多数源切换
    转载请注明来源侵权必究作者:狂客博客:https://www.cnblogs.com/kuangke//*继承这个抽象类setTargetDataSources设置数据源集合setDefaultTargetDataSource设置默......
  • jdk版本切换
        注意:若版本切换失败,将%JAVA_HOME17%/bin置顶环境变量列表,如下图所示: ......
  • 微服务框架——MybatisPlus
    MybatisPlus一、快速入门1.mybatisPlus特性无侵入:只增强,不改变。损耗小:启动的时候直接注入基本CRUD强大的CRUD操作:提供通用Mapper,通用service,条件构造器等Lambda:支......
  • 直播平台源代码,自定义播放器的清晰度切换
    直播平台源代码,自定义播放器的清晰度切换 <!DOCTYPEhtml><html><head>  <metacharset="utf-8">  <metahttp-equiv="x-ua-compatible"content="IE=edge"> ......
  • ArcGIS10.8版本里面,提示数据源缺少空间参考信息,不能投影,如何解决?
    明明在Arcgis10.2版本中打开shapefiles投影是正常的。  但到了ArcGIS10.8版本里面却提示数据源缺少空间参考信息,不能投影!!!经研究发现ArcGIS10.8版本竟然不能读取带B......
  • Vue新老系统切换(By 权)
    Vue新老系统切换1-    卸载node.js2-   https://github.com/coreybutler/nvm-windows/releases 下载nvm 3..安装后cmd  nvm-v 4.cmd里输入 nvmi......
  • 三种方式实现主题切换方案
    前端主题切换有些时候我们在网站上会进行夜间/白天模式的切换。这里我们介绍一种流行的切换模式css变量+动态类名来进行切换非常的简单。废话不多说。我们直接上代码......
  • spingboot10(切换内置web服务器)
    1-我们在使用SpringBoot_Web的使用默认会使用"Tomcat"服务器2-查看SpringBoot服务器的内置种类解析:知道了SpringBoot的4种服务器种类,现在就可以选择切换......
  • linux root切换新用户出现-bash-4.2$
     原因:新用户目录下缺少环境变量文件.bash_profile和.bashrc解决办法:将.bash_profile和.bashrc文件复制到登录的用户目录下登录root用户执行命令,执行完再次切换,切换成......
  • Spring--案例:数据源对象管理
    案例:数据源对象管理对于已经学过数据库的我来说,这看起来就像是连接数据库的操作;就像javaweb项目里面的db.properties文件的使用一样,我们需要先导入一个包,(我用的是Maven项......