spring boot 切换 oracle 和 mysql_spring-boot多数据源动态切换

8b7d6a3c4c2d0b1aa2cfadf7e88cd0d8.png

作者:码农教程

出自:码农教程

原文:manongjc.com/detail/14-ucsldoihyzmwcui.html


当项目中存在多数据源时,就涉及到数据源的动态切换,通过研究,特此记录一下。

1,maven依赖

<!-数据库连接->
<依赖性>
            <groupId> com.oracle </ groupId>
            <artifactId> ojdbc6 </ artifactId>
            <version> 11.2.0.4 </ version>
            <scope>运行时</ scope>
        </ dependency>
<!-数据库连接池->
<依赖性>
            <groupId> com.alibaba </ groupId>
            <artifactId> druid-spring-boot-starter </ artifactId>
            <version> 1.1.10 </ version>
        </ dependency>
        <依赖性>
            <groupId> org.springframework.boot </ groupId>
            <artifactId> spring-boot-starter-jdbc </ artifactId>
        </ dependency>
<!-aop->
<依赖性>
            <groupId> org.springframework.boot </ groupId>
            <artifactId> spring-boot-starter-aop </ artifactId>
        </ dependency>

2,多数据源信息配置

#多数据源测试
弹簧:
  数据源:
    德鲁伊:
     主:
        驱动程序-类-名称:oracle.jdbc.driver.OracleDriver
        用户名:test
        密码:测试
        网址:jdbc:oracle:thin:@ // ip1:1521 / orcl 
     slave:
        驱动程序-类-名称:oracle.jdbc.driver.OracleDriver
        用户名:test
        密码:测试
        网址:j
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring Boot是一种快速开发框架,可以快速、高效地开发和部署应用程序。而Mybatis Plus是一种基于Mybatis的扩展插件,可以简化Mybatis的开发流程,并提供更多的功能。 Spring Boot和Mybatis Plus整合起来,可以实现对两个不同的数据源(MySQLOracle)进行动态支持。具体来说,需要在Spring Boot配置文件中配置对应的数据源,并在Mybatis的配置中设置不同的数据源。 首先,需要在配置文件中定义两个数据源,如下所示: ``` spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false spring.datasource.username=root spring.datasource.password=123456 spring.datasource.secondary.url=jdbc:oracle:thin:@localhost:1521:ORCL spring.datasource.secondary.username=system spring.datasource.secondary.password=123456 ``` 这里定义了两个数据源,一个是MySQL,一个是Oracle。其中,MySQL的数据源配置了url、username和password,而Oracle的数据源配置了url、username和password。 然后,在Mybatis的配置中,需要使用动态数据源来支持两个数据源。具体来说,可以通过继承AbstractRoutingDataSource类,并重写determineCurrentLookupKey()方法,来动态切换数据源。如下所示: ``` public class DynamicDataSource extends AbstractRoutingDataSource { private static final ThreadLocal<String> dataSource = new ThreadLocal<String>(); public static void setDataSource(String dataSourceType) { dataSource.set(dataSourceType); } @Override protected Object determineCurrentLookupKey() { return dataSource.get(); } } ``` 这里定义了一个DynamicDataSource类,继承了AbstractRoutingDataSource类。通过设置ThreadLocal变量来指定要使用的数据源。当需要切换数据源时,只需调用setDataSource()方法即可。 最后,在Spring Boot启动类中,需要配置Mapper扫描器,并设置数据源路由规则。如下所示: ``` @SpringBootApplication @MapperScan(basePackages = "com.example.mapper") public class DemoApplication { @Bean public DynamicDataSource dataSource() { DynamicDataSource dynamicDataSource = new DynamicDataSource(); Map<Object,Object> targetDataSources = new HashMap<>(); targetDataSources.put("mysql", DataSourceBuilder.create().url(mysqlUrl).username(mysqlUsername).password(mysqlPassword).build()); targetDataSources.put("oracle", DataSourceBuilder.create().url(oracleUrl).username(oracleUsername).password(oraclePassword).build()); dynamicDataSource.setTargetDataSources(targetDataSources); dynamicDataSource.setDefaultTargetDataSource(targetDataSources.get("mysql")); return dynamicDataSource; } @Bean public SqlSessionFactory sqlSessionFactory(DynamicDataSource dynamicDataSource) throws Exception { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dynamicDataSource); sqlSessionFactoryBean.setTypeAliasesPackage("com.example.entity"); ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml")); return sqlSessionFactoryBean.getObject(); } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 这里定义了一个DynamicDataSource类,并设置了mysqloracle两个数据源。在SqlSessionFactory中,使用DynamicDataSource来替换默认的数据源。同时,设置Mapper扫描器,以便自动装配Mapper接口。这样就可以在Mybatis中动态切换数据源了。 综上所述,Spring Boot和Mybatis Plus整合起来,可以实现对两个不同的数据源(MySQLOracle)进行动态支持,可以满足大多数项目的需求。 ### 回答2: Spring Boot和MyBatis Plus是两个非常常用的Java框架。它们的结合为开发者提供了强大的开发工具和框架,可以帮助他们快速地完成应用程序的开发。同时,使用Spring Boot和MyBatis Plus进行动态支持MySQLOracle数据源整合也非常容易。 首先,我们需要在pom.xml文件中引入MySQLOracle数据库驱动程序的依赖。接着,我们需要在application.properties或者application.yml文件中配置数据源的相关信息。在Spring Boot和MyBatis Plus整合中,我们可以使用一个配置类来装配相关的Bean,如数据源,MyBatis的SqlSessionFactory等。需要注意的是,我们要为每一个数据源创建一个SqlSessionFactory对象,以便MyBatis Plus区分不同的数据源。 当我们完成以上步骤后,我们就可以基于mybatis-plus的动态数据源自动切换使用MySQLOracle数据库了。具体地,我们可以使用mybatis-plus提供的AbstractRoutingDataSource和DetermineDataSourceInterceptor类来实现动态数据源的切换。AbstractRoutingDataSource是一个抽象的数据源实现类,它可以根据key值自动切换对应的数据源。而DetermineDataSourceInterceptor则是一个实现MyBatis拦截器接口的类,它可以拦截MyBatis执行SQL语句的操作,根据业务逻辑动态切换数据源。通过以上两个类的配合,我们可以实现在同一应用中动态切换MySQLOracle数据源。 总之,Spring Boot和MyBatis Plus整合可以为开发者提供了非常方便的开发工具和框架,同时也可以轻松地实现动态支持MySQLOracle数据源整合。这对我们实现业务灵活性和数据资源共享都非常重要。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值