栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA配置多源数据库

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA配置多源数据库

备忘&分享 properties文件

示例2个数据源resourcesA & resourcesB

# web port
server.port=8102
# no web
#spring.main.web-environment=false

# log config
logging.config=classpath:logback.xml

spring.devtools.restart.exclude=static/**,public/**
spring.devtools.restart.enabled=true

#resourcesA
spring.datasource.adas.resourcesA.minimum-idle=5
spring.datasource.adas.resourcesA.maximum-pool-size=10
spring.datasource.adas.resourcesA.idle-timeout=30000
spring.datasource.adas.resourcesA.connection-timeout=30000
spring.datasource.adas.resourcesA.ConnectionTestQuery=select 1
spring.datasource.adas.resourcesA.jdbcUrl=jdbc:postgresql://******此处是数据库链接
spring.datasource.adas.resourcesA.username=postgres
spring.datasource.adas.resourcesA.password=password

#resourcesB
spring.datasource.empdata.resourcesB.minimum-idle=5
spring.datasource.empdata.resourcesB.maximum-pool-size=10
spring.datasource.empdata.resourcesB.idle-timeout=30000
spring.datasource.empdata.resourcesB.connection-timeout=30000
spring.datasource.empdata.resourcesB.ConnectionTestQuery=select 1
spring.datasource.empdata.resourcesB.jdbcUrl=jdbc:postgresql://***********此处是数据库链接
spring.datasource.empdata.resourcesB.username=postgres
spring.datasource.empdata.resourcesB.password=password

JAVA配置数据源 resourcesA

import javax.sql.DataSource;

import org.apache.ibatis.io.VFS;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import com.zaxxer.hikari.HikariDataSource;


@Configuration
@MapperScan(
//此处是对应的mapper包 @bean的name属性是自定义的
  basePackages = {"com.*.job.executor.mapper.resourcesA"},
  sqlSessionFactoryRef = "adasSqlSessionFactory"
)
public class resourcesAConfig{

  @Bean(name = "resourcesA")
  @ConfigurationProperties(prefix = "spring.datasource.adas.resourcesA")
  public DataSource dataSource() {
    return new HikariDataSource();
  }

  @Bean(name = "resourcesATransactionManager")
  public DataSourceTransactionManager resourcesATransactionManager() {
    return new DataSourceTransactionManager(dataSource());
  }

  @Bean(name = "resourcesASqlSessionFactory")
  public SqlSessionFactory resourcesASqlSessionFactory(@Qualifier("resourcesA") DataSource dataSource)
      throws Exception {
    final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
    sessionFactory.setDataSource(dataSource);
    VFS.addImplClass(SpringBootVFS.class);
    return sessionFactory.getObject();
  }
}

resourcesB
import javax.sql.DataSource;
import org.apache.ibatis.io.VFS;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import com.zaxxer.hikari.HikariDataSource;

@Configuration
@MapperScan(
  //此处是对应的mapper包 @bean的name属性是自定义的
  basePackages = {"com.*.*.*.mapper.empdata"},
  sqlSessionFactoryRef = "empSqlSessionFactory"
)
public class ResourcesBConfig {
 
  @Bean(name = "resourcesBSource")
  @ConfigurationProperties(prefix = "spring.datasource.empdata.resourcesB")
  public DataSource dataSource() {
    return new HikariDataSource();
  }

  @Bean(name = "eresourcesBTransactionManager")
  public DataSourceTransactionManager resourcesBTransactionManager() {
    return new DataSourceTransactionManager(dataSource());
  }

  @Bean(name = "resourcesBSqlSessionFactory")
  public SqlSessionFactory resourcesBSqlSessionFactory(@Qualifier("resourcesBSource") DataSource dataSource)
      throws Exception {
    final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
    sessionFactory.setDataSource(dataSource);
    VFS.addImplClass(SpringBootVFS.class);
    return sessionFactory.getObject();
  }
}

总结

不同的数据源对应不同的mapper层,就可以无缝衔接多个数据源了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/878093.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号