如何配置以实现对多个数据库的同时访问?

在配置同时访问多个数据库时,可以通过以下步骤实现:

如何配置以实现对多个数据库的同时访问?

1、添加依赖

在项目的pom.xml文件中添加相关依赖,确保项目能够支持多数据源的配置,使用Spring Boot和MyBatis时,需要引入如下依赖:

     <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <scope>runtime</scope>
     </dependency>
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-jdbc</artifactId>
     </dependency>
     <dependency>
         <groupId>org.mybatis</groupId>
         <artifactId>mybatis</artifactId>
         <version>3.5.5</version>
     </dependency>
     <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>druid</artifactId>
         <version>1.2.3</version>
     </dependency>
     <dependency>
         <groupId>org.mybatis</groupId>
         <artifactId>mybatis-spring</artifactId>
         <version>2.0.7</version>
     </dependency>
     <dependency>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
         <optional>true</optional>
     </dependency>

2、配置文件

application.ymlapplication.properties中配置多个数据源的信息,假设有两个数据库test_dbbiztest_db,其配置如下:

如何配置以实现对多个数据库的同时访问?

     spring:
       datasource:
         dev:
           driver-class-name: com.mysql.cj.jdbc.Driver
           jdbcUrl: jdbc:mysql://localhost:3306/test_db?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
           username: root
           password: 123456
           type: com.alibaba.druid.pool.DruidDataSource
         local:
           driver-class-name: com.mysql.cj.jdbc.Driver
           jdbcUrl: jdbc:mysql://localhost:3306/biztest_db?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
           username: biz_rw
           password: 654321
           type: com.alibaba.druid.pool.DruidDataSource

3、创建配置类

为每个数据源创建一个配置类,用于生成相应的DataSourceSqlSessionFactory对象。

     @Configuration
     @MapperScan(basePackages = "com.yourcom.proname.repository.mapper.dev", sqlSessionFactoryRef = "devSqlSessionFactory")
     public class DevDataSourceConfig {
         @Primary
         @Bean(name = "devDataSource")
         @ConfigurationProperties("spring.datasource.dev")
         public DataSource masterDataSource() {
             return DruidDataSourceBuilder.create().build();
         }
         @Primary
         @Bean(name = "devTransactionManager")
         public DataSourceTransactionManager masterTransactionManager(@Qualifier("devDataSource") DataSource dataSource) {
             return new DataSourceTransactionManager(dataSource);
         }
         @Primary
         @Bean(name = "devSqlSessionFactory")
         @ConfigurationPropertiesBinding
         public SqlSessionFactory sqlSessionFactory(@Qualifier("devDataSource") DataSource dataSource) throws Exception {
             MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
             factoryBean.setDataSource(dataSource);
             return factoryBean.getObject();
         }
     }
     @Configuration
     @MapperScan(basePackages = "com.yourcom.proname.repository.mapper.local", sqlSessionFactoryRef = "localSqlSessionFactory")
     public class LocalDataSourceConfig {
         @Bean(name = "localDataSource")
         @ConfigurationProperties("spring.datasource.local")
         public DataSource druidDataSource() {
             return DruidDataSourceBuilder.create().build();
         }
         @Bean(name = "localTransactionManager")
         public DataSourceTransactionManager masterTransactionManager(@Qualifier("localDataSource") DataSource dataSource) {
             return new DataSourceTransactionManager(dataSource);
         }
         @Bean(name = "localSqlSessionFactory")
         public SqlSessionFactory sqlSessionFactory(@Qualifier("localDataSource") DataSource dataSource) throws Exception {
             MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
             factoryBean.setDataSource(dataSource);
             return factoryBean.getObject();
         }
     }

相关问题与解答

1、为什么需要配置多个数据源?

配置多个数据源的需求通常出现在需要从不同数据库读取数据的场景下,在一个电商系统中,用户信息存储在用户数据库中,订单信息存储在订单数据库中,如果一次请求需要获取订单相关信息,还需要查询下单的用户信息,那么就需要连接两个数据库,通过配置多个数据源,可以实现这种跨数据库的数据访问。

如何配置以实现对多个数据库的同时访问?

2、如何切换不同的数据源?

切换不同的数据源可以通过动态数据源路由来实现,在Spring Boot中,可以使用AbstractRoutingDataSource类来创建自定义的数据源路由逻辑,根据业务需求,可以在运行时决定使用哪个数据源进行操作,这通常涉及在Service层或DAO层根据当前线程的上下文或其他条件动态设置数据源。

小伙伴们,上文介绍了“访问同时的数据库如何配置”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/634774.html

(0)
打赏 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
上一篇 2024-11-09 03:40
下一篇 2024-11-09 03:45

相关推荐

  • 怎么用python处理大量数据

    6、数据分析:使用Pandas提供的各种函数对数据进行分析,例如计算平均值、求和、排序等,计算某列的平均值:

    2023-12-17
    0125
  • 租用香港服务器的费用

    租用香港服务器的费用因供应商和配置不同而有所差异。

    2024-01-27
    0199
  • 2b2t的服务器地址

    2b2t的服务器地址2b2t,全称2b2t or bust,是一个由玩家自发组织的Minecraft服务器,这个服务器的特点是没有规则,玩家可以自由地破坏和建造,甚至可以互相攻击,由于其独特的玩法,吸引了大量的玩家参与,由于服务器的开放性,也带来了一些问题,如作弊、恶意破坏等,了解2b2t的服务器地址,对于玩家来说是非常重要的。服务器……

    2024-01-21
    0139
  • webservice的调用方式

    WebService是一种基于XML的通信协议,它允许不同的应用程序之间进行交互。Java中调用WebService接口有五种方式,包括通过eclipse等直接生成Client、利用dos命令生成代码、利用apache的AXIS直接调用远程的web service、service编程实现和使用Java API。这些方法都可以用来调用WebService接口,具体选择哪种方式取决于您的需求和技术水平。

    2024-01-24
    0175
  • vps远程连接失败怎么解决方法

    答:在Windows系统中,你可以通过“控制面板”-˃“系统和安全”-˃“Windows防火墙”来查看和更改防火墙设置,在这里,你可以添加或删除防火墙规则,以允许或阻止特定的程序或服务的连接,问题二:我使用的是Linux系统,如何检查防火墙设置?

    2023-12-20
    0112
  • java获取mac地址的方法有哪些

    什么是MAC地址MAC地址,即媒体访问控制地址(Media Access Control Address),是一种用于唯一标识网络接口控制器(NIC)的硬件地址,它是由网卡生产商分配的一个唯一的48位二进制数,用于在局域网中识别网络设备,MAC地址在以太网中被广泛使用,但在Wi-Fi和其他无线网络中也有应用。Java获取MAC地址的方……

    2023-12-15
    0105

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入