springboot 多数据源

package com.baiyue.mjump.springboot;

import javax.sql.DataSource;

import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.boot.autoconfigure.MybatisProperties;
import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;

import com.baiyue.mjump.anno.MapperStat;

@org.springframework.context.annotation.Configuration
@MapperScan(basePackages = "com.baiyue.mjump.dao", annotationClass = MapperStat.class, sqlSessionTemplateRef = "sqlSessionTemplate"+StatDataSourceConfig.SUFFIX)
public class StatDataSourceConfig {
    public static final String SUFFIX = "_stat";

    @Bean("dataSource" + SUFFIX)
    @ConfigurationProperties("spring.datasource" + SUFFIX)
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean("mybatisProperties" + SUFFIX)
    @ConfigurationProperties("mybatis" + SUFFIX)
    public MybatisProperties mybatisProperties() {
        return new MybatisProperties();
    }

    @Bean("transactionManager" + SUFFIX)
    public DataSourceTransactionManager transactionManager() {
        return new DataSourceTransactionManager(dataSource());
    }

    @Bean("sqlSessionFactory" + SUFFIX)
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        MybatisProperties properties = mybatisProperties();
        DataSource ds = dataSource();

        SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
        factory.setDataSource(ds);
        factory.setVfs(SpringBootVFS.class);
        Configuration configuration = properties.getConfiguration();
        if (configuration == null && !StringUtils.hasText(properties.getConfigLocation())) {
            configuration = new Configuration();
        }

        factory.setConfiguration(configuration);
        if (properties.getConfigurationProperties() != null) {
            factory.setConfigurationProperties(properties.getConfigurationProperties());
        }
        if (StringUtils.hasLength(properties.getTypeAliasesPackage())) {
            factory.setTypeAliasesPackage(properties.getTypeAliasesPackage());
        }
        if (StringUtils.hasLength(properties.getTypeHandlersPackage())) {
            factory.setTypeHandlersPackage(properties.getTypeHandlersPackage());
        }
        if (!ObjectUtils.isEmpty(properties.resolveMapperLocations())) {
            factory.setMapperLocations(properties.resolveMapperLocations());
        }
        return factory.getObject();
    }

    @Bean("sqlSessionTemplate" + SUFFIX)
    public SqlSessionTemplate sqlSessionTemplate() throws Exception {
        SqlSessionFactory sqlSessionFactory = sqlSessionFactory();
        MybatisProperties properties = mybatisProperties();

        ExecutorType executorType = properties.getExecutorType();
        if (executorType != null) {
            return new SqlSessionTemplate(sqlSessionFactory, executorType);
        } else {
            return new SqlSessionTemplate(sqlSessionFactory);
        }
    }
}
spring:
  application:
    name: console-mjump
  profiles:
    active: prod
  cloud:
    config:
      enabled: false
      profile: ${spring.profiles.active}
      uri: http://${eurekaip}/servicecenter/configs/
  datasource:
    url: jdbc:mysql://172.16.168.199:3306/game_plat
    username: chenlong
    password: Chen12%3Long
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    maxActive: 20
  datasource_trading:
    url: jdbc:mysql://172.16.168.199:3306/game_plat_record
    username: chenlong
    password: Chen12%3Long
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    maxActive: 20
  datasource_stat:
    url: jdbc:mysql://172.16.168.199:3306/game_plat_stat
    username: chenlong
    password: Chen12%3Long
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    maxActive: 20

mybatis:
  mapper-locations: classpath:sql/*.xml
  type-aliases-package: com.baiyue.mjump.entity,com.baiyue.mjump.entity.dto
  configuration:
    map-underscore-to-camel-case: true  
mybatis_trading:
  mapper-locations: classpath:sql/*.xml
  type-aliases-package: com.baiyue.mjump.entity,com.baiyue.mjump.entity.dto
  configuration:
    map-underscore-to-camel-case: true
mybatis_stat:
  mapper-locations: classpath:sql/*.xml
  type-aliases-package: com.baiyue.mjump.entity,com.baiyue.mjump.entity.dto
  configuration:
    map-underscore-to-camel-case: true

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值