幽兰生空谷
--绝世独自开

springboot配置Oracle多数据源,Tip:服务名是斜杠'/',sid是冒号':'

多数据源不同于动态数据源

多数据源就是在一个应用中配置多个不同的连接池,连接不同的数据库。即在xml中配置多个sqlSessionFactory,或是写配置类,但这种情况会造成如果应用中数据源比较多,那么建立的多个连接池就会在一定程度上消耗资源(资源宝贵呀),不过个人理解比较少的数据源建立多数据源还是可以接受的。

步骤:

1.在.yml文件中配置数据源连接信息。

spring:
  datasource:
    wms:
      wmsDbUser: test
      wmsDbHost: 127.0.0.1
      dbType: 1
      wmsDbInstance: test
      jdbcUrl: jdbc:oracle:thin:@127.0.0.1:1521:test
    local:
      localDbUser: system
      DbPassword: 123456
      localDbHost: 127.0.0.1
      localDbInstance: orcl
      jdbcUrl: jdbc:oracle:thin:@127.0.0.1:1521/orcl

ps: jdbcUrl最后面是 ‘/’ 还是 ‘:’ ,取决于后面的orcl是服务名,还是sid。

服务名是斜杠,sid是冒号

2.编写配置类sqlSessionFactory

每一个数据源对应一个配置类。


@Configuration
@MapperScan(basePackages = "com.demo.timetask.wms_p_wmsdb_duanxin_bmsxywebdb.local.mapper", sqlSessionFactoryRef = "localSqlSessionFactory")
public class SqlSessionFactory_Local {

    @Value("${spring.datasource.local.localDbHost}")
    private String ipAddress;
    @Value("${spring.datasource.local.localDbUser}")
    private String dbUser;
    @Value("${spring.datasource.bms.dbType}")
    private String dbType;
    @Value("${spring.datasource.local.localDbInstance}")
    private String dbInstance;
    @Value("${spring.datasource.local.jdbcUrl}")
    private String jdbcUrl;
    @Value("${spring.datasource.local.DbPassword}")
    private String password;

    @Bean(name = "localDataSource")
    public DataSource getDateSourceMed() {
        return DataSourceBuilder.create().password(password).url(jdbcUrl).username(dbUser).driverClassName("oracle.jdbc.driver.OracleDriver").build();
    }

    @Bean(name = "localSqlSessionFactory")
    public SqlSessionFactory medSqlSessionFactory(@Qualifier("localDataSource") DataSource datasource)
            throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(datasource);
        bean.setMapperLocations(
                new PathMatchingResourcePatternResolver().getResources("classpath*:mappers/localMappers/*.xml"));
        return bean.getObject();
    }

    @Bean("localSqlSessionTemplate")
    public SqlSessionTemplate medSqlSessionTemplate(
            @Qualifier("localSqlSessionFactory") SqlSessionFactory sessionFactory) {
        return new SqlSessionTemplate(sessionFactory);
    }

}

ps:属性注入可以有多种注入方式。如下:

    @Bean(name = "localDataSource")
    // 表示这个数据源是默认数据源
    @Primary
    // 读取application.properties中的配置参数映射成为一个对象
    // prefix表示参数的前缀
    @ConfigurationProperties(prefix = "spring.datasource.local")
    public DataSource getDateSourceMed() {
        return DataSourceBuilder.create().build();
    }

3.编写mapper文件和mapper.xml文件即可。

赞(3) 打赏
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《springboot配置Oracle多数据源,Tip:服务名是斜杠'/',sid是冒号':'》
文章链接:https://www.itheibai.com/archives/1059
免责声明:根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途,网站会员捐赠是您喜欢本站而产生的赞助支持行为,仅为维持服务器的开支与维护,全凭自愿无任何强求。

评论 抢沙发

评论前必须登录!

 

养成“打赏”的好习惯,从我做起!

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册