• 技术应用:使用Spring Boot、MyBatis Plus和Dynamic DataSource实现多数据源


    引言

    在现代的软件开发中,许多应用程序需要同时访问多个数据库。例如,一个电子商务平台可能需要访问多个数据库来存储用户信息、产品信息和订单信息等。在这种情况下,使用多数据源是一种常见的解决方案,它允许我们在一个应用程序中管理多个数据库连接。

    本文将介绍如何使用Spring Boot、MyBatis Plus和Dynamic DataSource实现多数据源。我们将学习如何配置和管理多个数据源,并在应用程序中使用它们执行数据库操作。(注:本文使用的Dynamic DataSource版本为4.2.0,参考文档:MyBatis Plus参考文档

    步骤

    1. 添加依赖

    首先,在您的Spring Boot项目中,您需要添加以下依赖:

    		<dependency>
                <groupId>com.baomidougroupId>
                <artifactId>mybatis-plus-boot-starterartifactId>
                <version>3.5.3version>
            dependency>
            
            <dependency>
                <groupId>com.baomidougroupId>
                <artifactId>mybatis-plus-generatorartifactId>
                <version>3.5.3version>
            dependency>
    
            <dependency>
                <groupId>com.baomidougroupId>
                <artifactId>dynamic-datasource-spring-boot-starterartifactId>
                <version>4.2.0version>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2. 配置数据源

    application.properties文件中配置您的数据源信息,例如:

    spring:
      application:
        name: test
      datasource:
        dynamic:
          primary: master #设置默认的数据源或者数据源组,默认值即为master
          strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
          datasource:
            master:
              url: jdbc:mysql://xxxx:3306/test?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useAffectedRows=true&serverTimezone=GMT%2B8
              username: root
              password: 12345678
              driver-class-name: com.mysql.jdbc.Driver # 3.2.0开始支持SPI可省略此配置
            sqlserver:
              url: jdbc:sqlserver://xxxxxx:1433;DatabaseName=test
              username: test
              password: 12345678
              driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    3. 创建Mapper接口和实体类

    创建Mapper接口和对应的实体类,并使用@Mapper注解标记Mapper接口。

    @DS("sqlserver")
    @Mapper
    public interface UserMapper {
        List<User> findAll();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    @DS("sqlserver")
    @Mapper
    public interface ProductMapper {
        List<User> findAll();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    @Data
    public class User {
        private Long id;
        private String name;
        private Integer age;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    @Data
    public class Product{
        private Long id;
        private String name;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4. 编写业务逻辑

    在您的Service层中编写业务逻辑,注入Mapper接口,直接使用即可。

    @Service
    public class TestService {
    
        @Autowired
        private UserMapper userMapper;
         @Autowired
        private ProductMapper productMapper;
    
        public void getAll() {
            userMapper.findAll();
            productMapper.findAll();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    5. 测试多数据源

    编写单元测试来测试多数据源的功能,确保应用程序可以正确地访问主数据库和从数据库。

    @SpringBootTest
    public class TestServiceTest {
    
        @Autowired
        private TestService testService;
    
        @Test
        public void testGetAll() {
            testService.getAll();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    总结

    通过本文的学习,我们了解了如何使用Spring Boot、MyBatis Plus和Dynamic DataSource实现多数据源。我们学习了如何配置和管理多个数据源,并在应用程序中使用它们执行数据库操作。多数据源可以帮助我们更灵活地处理不同的数据库连接需求,使我们的应用程序更具可扩展性和可靠性。

  • 相关阅读:
    基础-MVP标定-棋盘格标定算子
    Sui第五轮资助: 17个项目共获105万美元资助金
    Kaggle Feedback Prize 3比赛总结:如何高效使用hidden states输出(2)
    浅学Go下的ssti漏洞问题
    机器学习之逻辑回归
    深入理解目标检测模型与卷积网络的感受野
    pytest脚本常用的执行命令
    Android 9.0 设备蓝牙、位置、WIFI、NFC功能默认关闭
    云原生与低代码:重塑软件开发新生态
    C语言-调试文件
  • 原文地址:https://blog.csdn.net/wangjiansui/article/details/136304858