SpingBoot 多数据源 数据库 场景 Mysql

今天遇到一个业务问题 一个项目需要根据需求。到多个数据库进行查询。下面就是一个简单案列:

springboot项目

首先,我们需要导入相关依赖

MySQL依赖(根据MySQL版本选择适当的依赖):
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>版本号</version>
</dependency>
Oracle依赖(根据Oracle版本选择适当的依赖):
<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>版本号</version>
</dependency>
Druid连接池依赖:
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>版本号</version>
</dependency>

请确保在您的项目的pom.xml文件中添加这些依赖,并将版本号替换为实际使用的版本号。一旦您导入了这些依赖,就可以在您的应用程序中使用多个数据源,并按照配置文件中描述的方式进行配置。

然后。我们在配置文件中配置多个数据源

datasource:
    druid:
      stat-view-servlet:
        enabled: true
        loginUsername: admssin
        loginPassword: 1555456
    dynamic:
      druid:
        initial-size: 5
        min-idle: 5
        maxActive: 20
        maxWait: 60000
        timeBetweenEvictionRunsMillis: 60000
        minEvictableIdleTimeMillis: 300000
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        poolPreparedStatements: true
        maxPoolPreparedStatementPerConnectionSize: 20
        filters: stat,slf4j
        connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
      datasource:
        # 主库数据源
        master:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://25.196.0.36:3506/acs?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
          username: rosot
          password: daaaaa9r
           # 辅库数据源
        zzb:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://29.156.3.58:3306/zzb?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
          username: rooaat
          password: GLerdasdf9r
        # ORACLE数据源
        acorcl:
          url: jdbc:oracle:thin:@10.34.125.45:1231/dsdb
          username: d2s
          password: dqqqq
     

这段配置文件是一个YAML格式的Spring Boot应用程序配置文件,其中包含了关于数据源(DataSource)的配置信息。
根据配置文件内容,可以得到以下信息:
druid.stat-view-servlet.enabled属性被设置为true,表示启用Druid的Web监控页面。
druid.stat-view-servlet.loginUsername和druid.stat-view-servlet.loginPassword属性分别设置了Druid监控页面的登录用户名和密码。
dynamic.druid下的属性配置了Druid连接池的一些参数,例如连接池的初始大小、最小空闲连接数、最大活跃连接数以及其他一些连接池的配置。
dynamic.datasource下定义了多个数据源,每个数据源都有一个名称作为键,然后指定了该数据源的驱动类名、URL、用户名和密码等相关配置。
具体来说,配置文件中列举了三个数据源:
master:主库数据源,使用MySQL数据库。
zzb:ZXB数据源,也使用MySQL数据库。
acorcl:ACORCL数据源,使用Oracle数据库。
对于每个数据源,都提供了驱动类名、URL、用户名和密码等相关配置。
请注意,这只是一个示例配置文件,并且其中的敏感信息已经做了模糊处理(如用户名和密码)。

接着。我们自定义一个注解。用于指定数据源

@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@DS("zzb")
public @interface ZzbsqlDataSource {
}

@ZzbsqlDataSource是一个自定义注解,用于标记在类或方法上,并与@DS注解一起使用来指定数据源的名称。
以下是关于每个注解的作用的说明:
@Target({ ElementType.TYPE, ElementType.METHOD }):表示该注解可以用于类和方法上。
@Retention(RetentionPolicy.RUNTIME):表示该注解在运行时保留,并可通过反射机制读取。
@Documented:表示该注解将包含在Java文档中。
@DS(“zzb”):这是一个自定义注解@DS,它用于指定数据源的名称。在这里,数据源的名称被设置为"zzb"。
因此,当您将@ZzbsqlDataSource注解应用于类或方法时,它会告诉程序使用名为"zzb"的数据源。
请注意,@ZzbsqlDataSource注解本身并不提供任何额外的功能实现,它只是一个元数据注解,用于传递数据源信息给相应的处理器或切面。

最后。我们在对应的方法上添加自定义的注解即可。

@Service
public class IsdfServiceImpl implements IsdfService
{
	@Autowired
    private AhghMapper ahghMapper;
  	@Override
    @ZzbsqlDataSource
    public AseftById(String id)
    {
        return ahghMapper.selectAhghById(id);
    }
}

完成!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值