spring-boot 配置多数据源多orm框架混用

解决问题

配置多数据源 mysql+oracle
配置多个orm映射框架 jpa+mybatis

配置多数据源

application.properties 增加

spring.datasource.validation-query=select 1
spring.datasource.test-on-borrow=true
spring.datasource.test-while-idle=true

datasource.mysql.driverClassName=com.mysql.jdbc.Driver
datasource.mysql.url=jdbc:mysql://localhost:3306/database_name?createDatabaseIfNotExist=true&useUnicode=true&autoReconnect=true
datasource.mysql.username=username
datasource.mysql.password=password

datasource.oracle.driverClassName=oracle.jdbc.OracleDriver
datasource.oracle.url=jdbc\:oracle\:thin\:@localhost\:1521\:orcl
datasource.oracle.username=username
datasource.oracle.password=password

增加数据源配置类

@Configuration
public class DataSourceConfig {

    @Bean(name = "mysqlDS")
    @Primary   //默认数据源
    @ConfigurationProperties(prefix = "datasource.mysql")
    public DataSource mysqlDataSource() {
        return DataSourceBuilder.create().build();
    }

  @Bean(name = "oracleDS")
  @ConfigurationProperties(prefix = "datasource.oracle")
  public DataSource oracleDataSource() {
    return DataSourceBuilder.create().build();
  }
}

这样多数据源就配置好了。

配置mybatis

增加mybatis配置类, 使用oracle数据源.


@Configuration
@MapperScan(basePackages ="com.wjm.mybatis.dao",sqlSessionFactoryRef="oracleSessionFactory")
public class MybatisConfig {

    @Bean(name="oracleSessionFactory")\
    @Autowired
    @Qualifier("oracleDS")
    public SqlSessionFactory sqlSessionFactory(DataSource datasource) throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(datasource);
        return sessionFactory.getObject();
    }
}

这样在com.wjm.mybatis.dao包下的类使用mybatis+oracle.

配置JPA

增加jpa配置类


@Configuration
@EnableJpaRepositories(entityManagerFactoryRef = "mysqlEntityManagerFactory", transactionManagerRef = "mysqlTransactionManager", basePackages = { "com.wjm.jpa.dao" })
public class JpaConfig {
    @Bean(name = "mysqlEntityManagerFactory")
    @Autowired
    @Qualifier("mysqlDS")
        public EntityManagerFactory  entityManagerFactory(DataSource datasource) {
        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(true);
        vendorAdapter.setShowSql(true);
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setDataSource(datasource);
        factory.setPackagesToScan("com.wjm.model");
        Properties jpaProperties = new Properties();
        jpaProperties.put("hibernate.ejb.naming_strategy", "org.hibernate.cfg.ImprovedNamingStrategy");//命名策略
        factory.setJpaProperties(jpaProperties);
        factory.afterPropertiesSet();
        return factory.getObject();

    }

    @Bean(name = "mysqlTransactionManager")
    public PlatformTransactionManager transactionManagerSecondary() {
        JpaTransactionManager txManager = new JpaTransactionManager();
        txManager.setEntityManagerFactory(entityManagerFactory());
        return txManager;
    }

}

这样就配置好了Jpa+mysql数据源了。com.wjm.jpa.dao包下的类使用jpa
要管理的类放到com.wjm.model

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值