• springboot配置双数据源 MySQL和SqlServer


    1. pom文件的驱动jar包加上去,

    compile 'com.microsoft.sqlserver:mssql-jdbc:6.2.2.jre8'

    2. application.yml 

    spring:
    datasource:
            master:
              jdbc-url: jdbc:mysql://10.12.49.55:3306/smartcity-01
              username: root
              password: root
              # 使用druid数据源
              type: com.alibaba.druid.pool.DruidDataSource
              driverClassName: com.mysql.jdbc.Driver
            other:
              jdbc-url: jdbc:sqlserver://10.12.49.35:1433;DatabaseName=LandscapingDB
              username: sa
              password: Sql123
              #使用druid数据源
              type: com.alibaba.druid.pool.DruidDataSource
              driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver

    注意不要使用url,要使用jdbc-url

    主数据库配置:

    package com.pactera.scm.config;
     
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.mybatis.spring.SqlSessionFactoryBean;
    import org.mybatis.spring.SqlSessionTemplate;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.boot.jdbc.DataSourceBuilder;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Primary;
    import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
    import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    import javax.sql.DataSource;
     
    @Configuration
    @MapperScan(basePackages ="com.pactera.scm.mapper", sqlSessionFactoryRef = "masterSqlSessionFactory")
    public class MybatisDbMasterConfig {
     
        @Primary
        @Bean(name = "masterDataSource")
        @ConfigurationProperties(prefix = "spring.datasource.master")
        public DataSource dataSource() {
            return DataSourceBuilder.create().build();
        }
     
        @Primary
        @Bean(name = "masterSqlSessionFactory")
        public SqlSessionFactory sqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource) throws Exception {
            SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
            factoryBean.setDataSource(dataSource);
            factoryBean.setTypeAliasesPackage("com.pactera.scm.entity");
            factoryBean.setMapperLocations(
                    new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
            return factoryBean.getObject();
        }
     
        @Primary
        @Bean(name = "masterTransactionManager")
        public DataSourceTransactionManager transactionManager(@Qualifier("masterDataSource") DataSource dataSource) {
            return new DataSourceTransactionManager(dataSource);
        }
     
        @Bean(name = "masterSqlSessionTemplate")
        @Primary
        public SqlSessionTemplate testSqlSessionTemplate(
                @Qualifier("masterSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
            return new SqlSessionTemplate(sqlSessionFactory);
        }
    }
    

      第二数据库配置:

    package com.pactera.scm.config;
     
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.mybatis.spring.SqlSessionFactoryBean;
    import org.mybatis.spring.SqlSessionTemplate;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.boot.jdbc.DataSourceBuilder;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
    import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    import javax.sql.DataSource;
     
    @Configuration
    @MapperScan(basePackages = "com.pactera.scm.otherDB", sqlSessionFactoryRef = "otherSqlSessionFactory")
    public class MybatisDbOtherConfig {
     
        @Bean(name = "otherDataSource")
        @ConfigurationProperties(prefix = "spring.datasource.other")
        public DataSource dataSource() {
            return DataSourceBuilder.create().build();
        }
     
        @Bean(name = "otherTransactionManager")
        public DataSourceTransactionManager transactionManager(@Qualifier("otherDataSource") DataSource dataSource) {
            return new DataSourceTransactionManager(dataSource);
     
        }
     
        @Bean(name = "otherSqlSessionFactory")
        public SqlSessionFactory basicSqlSessionFactory(@Qualifier("otherDataSource") DataSource basicDataSource) throws Exception {
            SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
            factoryBean.setDataSource(basicDataSource);
            factoryBean.setMapperLocations(
                    new PathMatchingResourcePatternResolver().getResources("classpath:other/*.xml"));
            return factoryBean.getObject();
        }
     
        @Bean(name = "otherSqlSessionTemplate")
        public SqlSessionTemplate testSqlSessionTemplate(
                @Qualifier("otherSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
            return new SqlSessionTemplate(sqlSessionFactory);
        }
    }
    

      

    启动类正常些就行了,不需要改动,保证能扫描到配置文件就行
    
    @SpringBootApplication
    @EnableConfigurationProperties
    @EnableScheduling
    public class ScmApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(ScmApplication.class, args);
        }
    }
    使用:
    @Resource
    private AccountMapper accountMapper;
        直接调用就行
    

      

  • 相关阅读:
    SQL Server 2008中的FileStream支持 (转)
    解决SQL Server (MSSQLSERVER) 服务因 3417 (0xD59) 服务性错误而停止 .
    SQL Server 2008: CDC和Change Tracking
    无法升级数据库 'SchoolPlatForm1',因为它是只读的,或者具有只读文件。请将数据库或文件设为可写,然后重新运行恢复操作。 (Microsoft SQL Server,错误: 3415)
    在eclipse中将android项目生成apk并且给apk签名
    Android实现左右滑动效果
    Java Web开发中路径问题小结
    java的事务处理
    离线安装Eclipse的Android ADT开发插件
    jsp母版页组装
  • 原文地址:https://www.cnblogs.com/xiaofengfeng/p/9552816.html
Copyright © 2020-2023  润新知