我是靠谱客的博主 无限香菇,最近开发中收集的这篇文章主要介绍SpringBoot中使用Druid配置多数据源导入依赖 配置数据源定制化配置测试,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

导入依赖

 配置数据源

定制化配置

测试

目录结构

 成功


导入依赖

在SpringBoot中导入


<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.9</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

 配置数据源

spring:
datasource:
druid:
# 数据库访问配置, 使用druid数据源
# 数据源1
mysql1:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/vueblog?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull
username: root
password: root
# 数据源2
mysql2:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/vueblog2?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull
username: root
password: root
# 测试只需要配置好数据源即可
# 连接池配置
initial-size: 5
min-idle: 5
max-active: 20
# 连接等待超时时间
max-wait: 30000
# 配置检测可以关闭的空闲连接间隔时间
time-between-eviction-runs-millis: 60000
# 配置连接在池中的最小生存时间
min-evictable-idle-time-millis: 300000
validation-query: select '1' from dual
test-while-idle: true
test-on-borrow: false
test-on-return: false
# 打开PSCache,并且指定每个连接上PSCache的大小
pool-prepared-statements: true
max-open-prepared-statements: 20
max-pool-prepared-statement-per-connection-size: 20
# 配置监控统计拦截的filters, 去掉后监控界面sql无法统计, 'wall'用于防火墙
filters: stat,wall
# Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔
aop-patterns: com.springboot.servie.*
# WebStatFilter配置
web-stat-filter:
enabled: true
# 添加过滤规则
url-pattern: /*
# 忽略过滤的格式
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
# StatViewServlet配置
stat-view-servlet:
enabled: true
# 访问路径为/druid时,跳转到StatViewServlet
url-pattern: /druid/*
# 是否能够重置数据
reset-enable: false
# 需要账号密码才能访问控制台
login-username: druid
login-password: druid123
# IP白名单
# allow: 127.0.0.1
# IP黑名单(共同存在时,deny优先于allow)
# deny: 192.168.1.218
# 配置StatFilter
filter:
stat:
log-slow-sql: true

定制化配置

配置两个数据源指定哪个mapper

@Configuration
@MapperScan(basePackages = Mysql1DatasourceConfig.PACKAGE, sqlSessionFactoryRef = "mysql1SqlSessionFactory")
public class Mysql1DatasourceConfig {
// 重要代码,指定哪里的mapper使用这个数据库
static final String PACKAGE = "com.lt.druid.m1service";
// mybatis mapper扫描路径
//
static final String MAPPER_LOCATION = "classpath:mapper/mysql/*.xml";
@Primary
@Bean(name = "mysql1datasource")
@ConfigurationProperties("spring.datasource.druid.mysql1")
public DataSource mysqlDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean(name = "mysql1TransactionManager")
@Primary
public DataSourceTransactionManager mysqlTransactionManager() {
return new DataSourceTransactionManager(mysqlDataSource());
}
@Bean(name = "mysql1SqlSessionFactory")
@Primary
public SqlSessionFactory mysqlSqlSessionFactory(@Qualifier("mysql1datasource") DataSource dataSource)
throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
//如果不使用xml的方式配置mapper,则可以省去下面这行mapper location的配置。
//
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
//
.getResources(MysqlDatasourceConfig.MAPPER_LOCATION));
return sessionFactory.getObject();
}
}
@Configuration
@MapperScan(basePackages = Mysql2DatasourceConfig.PACKAGE, sqlSessionFactoryRef = "mysql2SqlSessionFactory")
public class Mysql2DatasourceConfig {
// 同上,配置扫描mapper的路径
static final String PACKAGE = "com.lt.druid.m2service";
// mybatis mapper扫描路径
//
static final String MAPPER_LOCATION = "classpath:mapper/mysql/*.xml";
@Bean(name = "mysql2datasource")
@ConfigurationProperties("spring.datasource.druid.mysql2")
public DataSource mysqlDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean(name = "mysql2TransactionManager")
public DataSourceTransactionManager mysqlTransactionManager() {
return new DataSourceTransactionManager(mysqlDataSource());
}
@Bean(name = "mysql2SqlSessionFactory")
public SqlSessionFactory mysqlSqlSessionFactory(@Qualifier("mysql2datasource") DataSource dataSource)
throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
//如果不使用xml的方式配置mapper,则可以省去下面这行mapper location的配置。
//
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
//
.getResources(MysqlDatasourceConfig.MAPPER_LOCATION));
return sessionFactory.getObject();
}
}

测试

目录结构

 成功

用controller直接调用测试即可

@Mapper
public interface Test1 {
@Select("select * from test_user")
ArrayList<User> a();
}
@Mapper
public interface Test2 {
@Select("select * from tags")
ArrayList<Tags> getTags();
}

最后

以上就是无限香菇为你收集整理的SpringBoot中使用Druid配置多数据源导入依赖 配置数据源定制化配置测试的全部内容,希望文章能够帮你解决SpringBoot中使用Druid配置多数据源导入依赖 配置数据源定制化配置测试所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部