springboot配置多数据源并集成Druid和mybatis的操作

网友投稿 597 2022-10-09


springboot配置多数据源并集成Druid和mybatis的操作

可以是mysql,oracle等多种不同数据源

项目结构

注意:只有@Primary的数据源所控制的mapper文件加注解@Mapper,否则mybatis无法切换扫描;即本文中的mapper/opener文件夹下mapper加注解

1、pom

驱动之外加入druid和mybatis等pom,整合mybatis自行搜索

com.alibaba

druid-spring-boot-starter

1.1.23

2、properties配置

################## JDBC 配置 ################

#资讯数据库一配置

spring.datasource.druid.opener.driver-class-name=oracle.jdbc.driver.OracleDriver

spring.datasource.druid.opener.url=jdbc:oracle:thin:@127.0.0.1:1521:wljrdb

spring.datasource.druid.opener.username=opener

spring.datasource.druid.opener.password=123456

#舆情数据库二配置

spring.datasource.druid.yq.driver-class-name=oracle.jdbc.driver.OracleDriver

spring.datasource.druid.yq.url=jdbc:oracle:thin:@127.0.0.1:1521:wljrdb

spring.datasource.druid.yq.username=YQ

spring.datasource.druid.yq.password=123456

#f10数据库二配置

spring.datasource.druid.f10.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.druid.f10.url=jdbc:mysql://127.0.0.1:3306/iwin-f10?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2b8

spring.datasource.druid.f10.username=root

spring.datasource.druid.f10.password=123456

########################## druid配置 ##########################

# 下面为连接池的补充设置,应用到上面所有数据源中# 初始化大小,最小,最大

################## 连接池配置 ################

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

spring.datasource.druid.initial-size=5

spring.datasource.druid.max-active=20

spring.datasource.druid.min-idle=5

spring.datasource.druid.max-wait=30000

spring.datasource.druid.validation-query=SELECT 1 FROM DUAL

spring.datasource.druid.validation-query-timeout=30000

# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙

spring.datasource.druid.filters=stat,wall,log4j2

# 通过connectProperties属性来打开mergeSql功能;慢SQL记录

spring.datasource.druid.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

# 监控中心 如果设置了StatViewServlet,即配置了监控池认证,

# 要进监控池需要输入http://127.0.0.1:8083/druid/login.html,如果没配置,直接输入http://127.0.0.1:8083/druid/即可

spring.datasource.druid.stat-view-servlet.enabled= true

spring.datasource.druid.stat-view-servlet.url-pattern= /druid/*

spring.datasource.druid.stat-view-servlet.reset-enable= true

spring.datasource.druid.stat-view-servlet.login-username= admin

spring.datasource.druid.stat-view-servlet.login-password= admin123

spring.datasource.druid.stat-view-servlet.allow= 127.0.0.1

3、配置文件

import com.alibaba.druid.pool.DruidDataSource;

import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;

import org.apache.ibatis.session.SqlSessionFactory;

import org.mybatis.spring.SqlSessionFactoryBean;

import org.mybatis.spring.mapper.MapperScannerConfigurer;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;

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.core.io.support.PathMatchingResourcePatternResolver;

import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

/**

* @Author: admin

*/

@Configuration

public class MultiDataSourceConfig {

private final static Logger logger = LoggerFactory.getLogger(MultiDataSourceConfig.class);

@Bean

@Primary

@ConfigurationProperties(prefix = "spring.datasource.druid.opener")

public DataSource openerDataSource(){

logger.info("opener数据源初始化。。。");

return DruidDataSourceBuilder.create().build();

}

@Bean

@ConfiguratrADNnygpionProperties(prefix = "spring.datasource.druid.yq")

public DataSource yqDataSource(){

logger.info("YQ数据源初始化。。。");

return DruidDataSourceBuilder.create().build();

}

@Bean

@ConfigurationProperties(prefix = "spring.datasource.druid.f10")

public DataSource f10DataSource(){

logger.info("f10数据源初始化。。。");

return DruidDataSourceBuilder.create().build();

}

@Bean

@Primary

public SqlSessionFactory openerSqlSessionFactory(@Qualifier("openerDataSource")DataSource openerDataSource) throws Exception{

SqlSessionFactoryBean fb = new SqlSessionFactoryBean();

fb.setDataSource(openerDataSource);

fb.setMapperLocations(

new PathMatchingResourcePatternResolver().getResources("classpath:/mybatis/opener/*.xml")

);

return fb.getObject();

}

@Bean

public SqlSessionFactory yqSqlSessionFactory(@Qualifier("yqDataSource")DataSource yqDataSource) throws Exception{

SqlSessionFactoryBean fb = new SqlSessionFactoryBean();

fb.setDataSource(yqDataSource);

fb.setMapperLocations(

new PathMatchingResourcePatternResolver().getResources("classpath:/mybatis/yq/*.xml")

);

return fb.getObject();

}

@Bean

public SqlSessionFactory f10SqlSessionFactory(@Qualifier("f10DataSource")DataSource f10DataSource) throws Exception{

SqlSessionFactoryBean fb = new SqlSessionFactoryBean();

fb.setDataSource(f10DataSource);

fb.setMapperLocations(

new PathMatchingResourcePatternResolver().getResources("classpath:/mybatis/f10/*.xml")

);

return fb.getObject();

}

@Bean(name="openerMapperScannerConfigurer")

@Primary

public MapperScannerConfigurer openerMapperScannerConfigurer(){

MapperScannerConfigurer configurer = new MapperScannerConfigurer();

configurer.setSqlSessionFactoryBeanName("openerSqlSessionFactory");

configurer.setBasePackage("com.cfzq.lz.mapper.opener");

return configurer;

}

@Bean(name="yqMapperScannerConfigurer")

public MapperScannerConfigurer yqMapperScannerConfigurer(){

MapperScannerConfigurer configurer = new MapperScannerConfigurer();

configurer.setSqlSessionFactoryBeanName("yqSqlSessionFactory");

configurer.setBasePackage("com.cfzq.lz.mapper.yq");

return configurer;

}

@Bean(name="f10MapperScannerConfigurer")

public MapperScannerConfigurer f10MapperScannerConfigurer(){

MapperScannerConfigurer configurer = new MapperScannerConfigurer();

configurer.setSqlSessionFactoryBeanName("f10SqlSessionFactory");

configurer.setBasePackage("com.cfzq.lz.mapper.f10");

return configurer;

}

@Bean(name="openerTransactionManager")

@Primary

public DataSourceTransactionManager openerTransactionManager(@Qualifier("openerDataSource")DataSource openerDataSource) throws Exception{

return new DataSourceTransactionManager(openerDataSource);

}

@Bean(name="yqTransactionManager")

public DataSourceTransactionManager yqTransactionManager(@Qualifier("yqDataSource")DataSource yqDataSource) throws Exception{

return new DataSourceTransactionManager(yqDataSource);

}

@Bean(name="f10TransactionManager")

public DataSourceTransactionManager f10TransactionManager(@Qualifier("f10DataSource")DataSource f10DataSource) throws Exception{

return new DataSourceTransactionManager(f10DataSource);

}

}

代码调用


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:最近的一点点感想(心中的感慨一点点)
下一篇:HTTP协议(7)HTTP请求头
相关文章

 发表评论

暂时没有评论,来抢沙发吧~