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

springboot配置多数据源,不同的数据库

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

springboot配置多数据源,不同的数据库

1.配置文件## 2.mybatis 多数据源配置

mybatis根据不同的数据源调用不同的dao和mapper文件,在这里需要把你想要被扫描的dao建在一个新的文件夹。

核心代码
@MapperScan(basePackages = "com.sthg.dao.pg", sqlSessionTemplateRef = "pgSqlSessionTemplate")

sqlSessionTemplateRef 指定使用哪个SqlSessionTemplate,SqlSessionTemplate是创建SqlSession的会话,SqlSessionTemplate是SqlSession的一个实现类,SqlSessionFactory是一个SqlSession的创建工厂,
SqlSessionFactory里又是注入DataSource(数据库连接配置),这里就实现了,当调用哪个dao使用哪个接口的逻辑。

数据源一配置
package com.sthg.common.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.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

@Configuration
@MapperScan(basePackages = "com.sthg.dao.trino",sqlSessionTemplateRef = "appstoreSqlSessionTemplate")
public class AppstoreDataSourceConfig {

	@Bean(name="appstoreDataSource")
	@ConfigurationProperties(prefix = "spring.datasource.trino")
	public DataSource appstoreDataSource() {
		return DataSourceBuilder.create().build();
	}

	@Bean(name="appstoreSqlSessionFactory")
	public SqlSessionFactory appstoreSqlSessionFactory(@Qualifier("appstoreDataSource") DataSource dataSource) throws Exception {
		SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
		sqlSessionFactoryBean.setDataSource(dataSource);
		sqlSessionFactoryBean.setTypeAliasesPackage("com.sthg.entity");
//		sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/appstore
@Configuration
@MapperScan(basePackages = "com.sthg.dao.clickhouse",sqlSessionTemplateRef = "iamSqlSessionTemplate")
public class IamDataSourceConfig {

	
	@Bean(name="iamDataSource")    //作用在方法上,注入;一般和@Qualifier配合使用
	@ConfigurationProperties(prefix = "spring.datasource.ck")   //指定加载哪个数据库配置
	@Primary   //是指默认值,多个数据源只能存在一个默认值,及仅能一个数据源使用该注解
	public DataSource iamDataSource() {
		return DataSourceBuilder.create().build();
	}

	
	@Bean(name="iamSqlSessionFactory")
	@Primary
	public SqlSessionFactory iamSqlSessionFactory(@Qualifier("iamDataSource") DataSource dataSource) throws Exception {
		SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
		sqlSessionFactoryBean.setDataSource(dataSource);
		sqlSessionFactoryBean.setTypeAliasesPackage("com.sthg.entity");   //设置mybatis别名
//		sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/iam
	@Bean(name="iamTransactionManager")
	@Primary
	public DataSourceTransactionManager testTransactionManager(@Qualifier("iamDataSource") DataSource dataSource) {
		return new DataSourceTransactionManager(dataSource);
	}

	
	@Bean(name="iamSqlSessionTemplate")
	@Primary
	public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("iamSqlSessionFactory") SqlSessionFactory sqlSessionFactory){
		return new SqlSessionTemplate(sqlSessionFactory);
	}
}
dao创建的格式


到此多数据源配置完成.

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

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

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