关于Springboot 配置多数据源 Druid 德鲁伊

  • yml
  • config

yml

server:port: 8080servlet:encoding:charset: UTF-8
spring:resources:static-locations: classpath:/staticapplication:name:springboot_listaop:proxy-target-class: trueauto: truemvc:static-path-pattern: /**thymeleaf:check-template-location: true  # 检查模板位置是否正确(默认值 :true )check-template: true  # 检查模板是否存在,然后再呈现content-type: text/htmlenabled: trueencoding: UTF-8cache: false  # 开启模板缓存(默认值: true )mode: HTML5prefix: classpath:/templates/suffix: .htmldatasource:#使用druid连接池type: com.alibaba.druid.pool.DruidDataSourceprimary:datasource:#druid相关配置druid:#监控统计拦截的filtersfilters: statdriverClassName: com.mysql.cj.jdbc.Driver#配置基本属性url: username: password: #配置初始化大小/最小/最大initialSize: 1minIdle: 1maxActive: 20#获取连接等待超时时间maxWait: 60000#间隔多久进行一次检测,检测需要关闭的空闲连接timeBetweenEvictionRunsMillis: 60000#一个连接在池中最小生存的时间minEvictableIdleTimeMillis: 300000validationQuery: SELECT 'x'testWhileIdle: truetestOnBorrow: falsetestOnReturn: false#打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为falsepoolPreparedStatements: falsemaxPoolPreparedStatementPerConnectionSize: 20# 自定义的从数据源配置信息
time:datasource:#druid相关配置druid:#监控统计拦截的filtersfilters: statdriverClassName: com.mysql.cj.jdbc.Driver#配置基本属性url: username: password: #配置初始化大小/最小/最大initialSize: 1minIdle: 1maxActive: 20#获取连接等待超时时间maxWait: 60000#间隔多久进行一次检测,检测需要关闭的空闲连接timeBetweenEvictionRunsMillis: 60000#一个连接在池中最小生存的时间minEvictableIdleTimeMillis: 300000validationQuery: SELECT 'x'testWhileIdle: truetestOnBorrow: falsetestOnReturn: false#打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为falsepoolPreparedStatements: falsemaxPoolPreparedStatementPerConnectionSize: 20sqlser:datasource:druid:#监控统计拦截的filtersfilters: statusername: password: url: driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriverinitialSize: 1minIdle: 1maxActive: 20#获取连接等待超时时间maxWait: 60000#间隔多久进行一次检测,检测需要关闭的空闲连接timeBetweenEvictionRunsMillis: 60000#一个连接在池中最小生存的时间minEvictableIdleTimeMillis: 300000validationQuery: SELECT 'x'testWhileIdle: truetestOnBorrow: falsetestOnReturn: false#打开PSCache,并指定每个连接上PSCache的大小。oracle设为true,mysql设为false。分库分表较多推荐设置为falsepoolPreparedStatements: falsemaxPoolPreparedStatementPerConnectionSize: 20#      url: jdbc:mysql://192.168.1.66:3306/hnks_qzj?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT&useSSL=false
#      driver-class-name: com.mysql.cj.jdbc.Driver
#      username: hnks
#      password: hnksadmin
#      initial-size: 1
#      min-idle: 1
#      max-active: 20mybatis-plus:mapper-locations: classpath:mapper/*/*.xmltype-aliases-package: com.hnks.springboot_list.entity.*configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: true #驼峰logging:level:com.hnks.springboot_list.mapper.*: debug

config

import com.alibaba.druid.pool.DruidDataSource;
import lombok.Data;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
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.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Component;import javax.sql.DataSource;
import java.sql.SQLException;/*** @Description: 后台数据源配置类*/@Data
@Configuration
@Component
@ConfigurationProperties(prefix = "time.datasource.druid")
@MapperScan(basePackages = BackDataBaseConfig.PACKAGE, sqlSessionFactoryRef = "backSqlSessionFactory")
public class BackDataBaseConfig {/*** dao层的包路径*/static final String PACKAGE = "com.hnks.springboot_list.mapper.time";/*** mapper文件的相对路径*/private static final String MAPPER_LOCATION = "classpath:mapper/time/*.xml";private String filters;private String url;private String username;private String password;private String driverClassName;private int initialSize;private int minIdle;private int maxActive;private long maxWait;private long timeBetweenEvictionRunsMillis;private long minEvictableIdleTimeMillis;private String validationQuery;private boolean testWhileIdle;private boolean testOnBorrow;private boolean testOnReturn;private boolean poolPreparedStatements;private int maxPoolPreparedStatementPerConnectionSize;@Bean(name = "backDataSource")public DataSource backDataSource() throws SQLException {DruidDataSource druid = new DruidDataSource();// 监控统计拦截的filtersdruid.setFilters(filters);// 配置基本属性druid.setDriverClassName(driverClassName);druid.setUsername(username);druid.setPassword(password);druid.setUrl(url);//初始化时建立物理连接的个数druid.setInitialSize(initialSize);//最大连接池数量druid.setMaxActive(maxActive);//最小连接池数量druid.setMinIdle(minIdle);//获取连接时最大等待时间,单位毫秒。druid.setMaxWait(maxWait);//间隔多久进行一次检测,检测需要关闭的空闲连接druid.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);//一个连接在池中最小生存的时间druid.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);//用来检测连接是否有效的sqldruid.setValidationQuery(validationQuery);//建议配置为true,不影响性能,并且保证安全性。druid.setTestWhileIdle(testWhileIdle);//申请连接时执行validationQuery检测连接是否有效druid.setTestOnBorrow(testOnBorrow);druid.setTestOnReturn(testOnReturn);//是否缓存preparedStatement,也就是PSCache,oracle设为true,mysql设为false。分库分表较多推荐设置为falsedruid.setPoolPreparedStatements(poolPreparedStatements);// 打开PSCache时,指定每个连接上PSCache的大小druid.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);return druid;}@Bean(name = "backTransactionManager")public DataSourceTransactionManager backTransactionManager() throws SQLException {return new DataSourceTransactionManager(backDataSource());}@Bean(name = "backSqlSessionFactory")public SqlSessionFactory backSqlSessionFactory(@Qualifier("backDataSource") DataSource backDataSource) throws Exception {final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();sessionFactory.setDataSource(backDataSource);sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(BackDataBaseConfig.MAPPER_LOCATION));return sessionFactory.getObject();}
}
import com.alibaba.druid.pool.DruidDataSource;
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties;
import lombok.Data;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;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.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Component;import javax.sql.DataSource;
import java.sql.SQLException;@Data
@Configuration
// 前缀为primary.datasource.druid的配置信息
@Component
@ConfigurationProperties(prefix = "primary.datasource.druid")
@MapperScan(basePackages = PrimaryDataBaseConfig.PACKAGE, sqlSessionFactoryRef = "primarySqlSessionFactory")
public class PrimaryDataBaseConfig {/*** dao层的包路径*/static final String PACKAGE = "com.hnks.springboot_list.mapper.primary";/*** mapper文件的相对路径*/private static final String MAPPER_LOCATION = "classpath:mapper/primary/*.xml";private String filters;private String url;private String username;private String password;private String driverClassName;private int initialSize;private int minIdle;private int maxActive;private long maxWait;private long timeBetweenEvictionRunsMillis;private long minEvictableIdleTimeMillis;private String validationQuery;private boolean testWhileIdle;private boolean testOnBorrow;private boolean testOnReturn;private boolean poolPreparedStatements;private int maxPoolPreparedStatementPerConnectionSize;// 主数据源使用@Primary注解进行标识@Primary@Bean(name = "primaryDataSource")public DataSource primaryDataSource() throws SQLException {DruidDataSource druid = new DruidDataSource();// 监控统计拦截的filtersdruid.setFilters(filters);// 配置基本属性druid.setDriverClassName(driverClassName);druid.setUsername(username);druid.setPassword(password);druid.setUrl(url);//初始化时建立物理连接的个数druid.setInitialSize(initialSize);//最大连接池数量druid.setMaxActive(maxActive);//最小连接池数量druid.setMinIdle(minIdle);//获取连接时最大等待时间,单位毫秒。druid.setMaxWait(maxWait);//间隔多久进行一次检测,检测需要关闭的空闲连接druid.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);//一个连接在池中最小生存的时间druid.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);//用来检测连接是否有效的sqldruid.setValidationQuery(validationQuery);//建议配置为true,不影响性能,并且保证安全性。druid.setTestWhileIdle(testWhileIdle);//申请连接时执行validationQuery检测连接是否有效druid.setTestOnBorrow(testOnBorrow);druid.setTestOnReturn(testOnReturn);//是否缓存preparedStatement,也就是PSCache,oracle设为true,mysql设为false。分库分表较多推荐设置为falsedruid.setPoolPreparedStatements(poolPreparedStatements);// 打开PSCache时,指定每个连接上PSCache的大小druid.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);return druid;}// 创建该数据源的事务管理@Primary@Bean(name = "primaryTransactionManager")public DataSourceTransactionManager primaryTransactionManager() throws SQLException {return new DataSourceTransactionManager(primaryDataSource());}// 创建Mybatis的连接会话工厂实例@Primary@Bean(name = "primarySqlSessionFactory")public SqlSessionFactory primarySqlSessionFactory(@Qualifier("primaryDataSource") DataSource primaryDataSource, MybatisPlusProperties mybatisPlusProperties) throws Exception {final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();sessionFactory.setDataSource(primaryDataSource);  // 设置数据源beansessionFactory.setConfiguration(mybatisPlusProperties.getConfiguration());//配置mybatisPlus sql打印日志
//        sessionFactory.setConfiguration(mybatisProperties.getConfiguration());// mybatis 配置sql打印日志
//        MybatisProperties mybatisPropertiessessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(PrimaryDataBaseConfig.MAPPER_LOCATION));  // 设置mapper文件路径return sessionFactory.getObject();}
}
import com.alibaba.druid.pool.DruidDataSource;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import lombok.Data;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
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.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Component;import javax.sql.DataSource;
import java.sql.SQLException;/*** @Description: 后台数据源配置类*/@Data
@Configuration
@Component
@ConfigurationProperties(prefix = "sqlser.datasource.druid")
@MapperScan(basePackages = SqlServerDataBaseConfig.PACKAGE, sqlSessionFactoryRef = "sqlServerDataBase")
public class SqlServerDataBaseConfig {/*** dao层的包路径*/static final String PACKAGE = "com.hnks.springboot_list.mapper.sqlser";/*** mapper文件的相对路径*/private static final String MAPPER_LOCATION = "classpath:mapper/sqlser/*.xml";private String filters;private String url;private String username;private String password;private String driverClassName;private int initialSize;private int minIdle;private int maxActive;private long maxWait;private long timeBetweenEvictionRunsMillis;private long minEvictableIdleTimeMillis;private String validationQuery;private boolean testWhileIdle;private boolean testOnBorrow;private boolean testOnReturn;private boolean poolPreparedStatements;private int maxPoolPreparedStatementPerConnectionSize;@Bean(name = "sqlBaseConfig")public DataSource sqlBaseConfig() throws SQLException {DruidDataSource druid = new DruidDataSource();// 监控统计拦截的filtersdruid.setFilters(filters);// 配置基本属性druid.setDriverClassName(driverClassName);druid.setUsername(username);druid.setPassword(password);druid.setUrl(url);//初始化时建立物理连接的个数druid.setInitialSize(initialSize);//最大连接池数量druid.setMaxActive(maxActive);//最小连接池数量druid.setMinIdle(minIdle);//获取连接时最大等待时间,单位毫秒。druid.setMaxWait(maxWait);//间隔多久进行一次检测,检测需要关闭的空闲连接druid.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);//一个连接在池中最小生存的时间druid.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);//用来检测连接是否有效的sqldruid.setValidationQuery(validationQuery);//建议配置为true,不影响性能,并且保证安全性。druid.setTestWhileIdle(testWhileIdle);//申请连接时执行validationQuery检测连接是否有效druid.setTestOnBorrow(testOnBorrow);druid.setTestOnReturn(testOnReturn);//是否缓存preparedStatement,也就是PSCache,oracle设为true,mysql设为false。分库分表较多推荐设置为falsedruid.setPoolPreparedStatements(poolPreparedStatements);// 打开PSCache时,指定每个连接上PSCache的大小druid.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);return druid;}@Bean(name = "backManager")public DataSourceTransactionManager backManager() throws SQLException {return new DataSourceTransactionManager(sqlBaseConfig());}@Bean(name = "sqlServerDataBase")public SqlSessionFactory sqlServerDataBaseConfig(@Qualifier("sqlBaseConfig") DataSource backDataSource) throws Exception {final MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();sessionFactory.setDataSource(backDataSource);sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(SqlServerDataBaseConfig.MAPPER_LOCATION));return sessionFactory.getObject();}
}

特别注意

mybatis 和mybatisplus 是不一样的 mybatis->SqlSessionFactoryBean
mybatisplus->MybatisSqlSessionFactoryBean(曾经也是吃了我半天时间!!)

打印控制台sql:mybatis -》MybatisProperties sessionFactory.setConfiguration(mybatisProperties.getConfiguration());// mybatis 配置sql打印日志

打印控制台sql:mybatisplus-》MybatisPlusProperties
sessionFactory.setConfiguration(mybatisPlusProperties.getConfiguration());//配置mybatisPlus sql打印日志

关于Springboot 配置多数据源 Druid 德鲁伊相关推荐

  1. SpringBoot 配置多数据源

    项目Git地址:SpringBoot 配置多数据源:Jacob-multi-data-source 准备工作 准备两个数据库(此模块中两个数据库一个为本地 一个为远程,本地为主,远程为从).然后建表. ...

  2. SpringBoot配置多数据源(结合Druid)

    在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.properties文件中配置连接参数即可.但是往往随着业务量发展,我们通常会进行数据库拆分或是引入其他数据库 ...

  3. SpringBoot 配置多数据源(Sql Server、MySql)

    创建SpringBoot项目就不说了.(直接使用IDEA创建就好了) 整个目录结构如图:(不用管图中报错,项目是在另一台电脑上写的.报错是没有jar包,因为网络比较慢.) 1.主要pom.xml &l ...

  4. SpringBoot配置多数据源数据库

    ** 一.SpringBoot + Druid + Mybatisplus 使用注解整合 ** 主要依赖包: spring-boot-starter-web mybatis-plus-boot-sta ...

  5. SpringBoot配置多数据源Mybatis/MybatisPlus/mysql

    一.前言 项目开发过程中,单一数据源不能满足开发需求或者需要用到主从数据库的时候,引入多数据源配置在项目中显得尤为必要.下面简单介绍一种在spingboot中结合mybatis针对同类型的数据源mys ...

  6. SpringBoot配置多数据源(MySQL+SQLServer)

    最近刚学习springboot,为了以后的开发需要故搭建双数据源配置,本文中使用了MySQL+SQLServer,若想在换成oracle数据库,直接在此数据配置的基础上进行再增加一个类似的配置,项目主 ...

  7. Reason: Failed to determine a suitable driver class springboot配置了数据源,启动包url找不到 Reason: Failed to

    自学springboot头疼啊,明明已经配置了数据源,但是在启动项目的时候总是报上面的错误. 网上最多的一种就是给springApplication添加 Exculed 关闭 DataAutowire ...

  8. springboot配置mysql数据源_SpringBoot+mysql配置两个数据源

    1.properties配置文件信息 spring.datasource.primary.jdbc-url=jdbc:mysql://rm... spring.datasource.primary.u ...

  9. SpringBoot 配置多数据源 dynamic-datasource(多库)

    1.Maven 包 <!-- 多数据源配置 --> <dependency><groupId>com.baomidou</groupId><art ...

最新文章

  1. JpA使用自定义类接收数据库返回的结果集
  2. 计算比尔盖茨財富的方法
  3. Nature Methods:基于人工重组菌群数据的宏基因组的软件评估金标准
  4. 设计模式总结 (3)创建内存型模式
  5. chrome添加来自其他网站的扩展程序
  6. 手机访问同局域网下的PC中Tomcat中的项目
  7. 圣诞前夜预告|深入理解Linux内核经验分享
  8. python学习(九) 网络编程学习--简易网站服务器
  9. Laravel核心解读--用户认证系统的实现细节
  10. Java根据出生年月日获取到当前日期的年月日
  11. 【面试题】同学的面经
  12. ensp动态路由ospf配置
  13. 安装配置fcitx输入法
  14. 在项目中发现哪些经典bug?什么原因导致的?
  15. 网易免费邮箱服务器,网易免费邮箱重新免费开放POP3/SMTP服务
  16. 牛客 打气球的最大分数
  17. 如何在表格里做计算机统计表,如何运用Excel编制统计表并做一般数据分析?-excel统计怎么做,最简单的统计表格怎么做...
  18. 实现自己的音乐搜索软件(一)
  19. Linux lolcat输出彩色格言
  20. 计算机二级c语言考试总结,计算机二级考试C语言知识点总结 .doc

热门文章

  1. Generator(生成器),入门初基,Coroutine(原生协程),登峰造极,Python3.10并发异步编程async底层实现
  2. 华为鸿蒙朱丹丹,挤走朱丹成浙江一姐,转身进湖南卫视,今沦落成三线主持处境尴尬...
  3. Alfred 3 for Mac
  4. 上线“金睛”平台 绿色直播自律联盟迎来第二批成员
  5. linux系统备份及还原
  6. Python发送手机短信(融合云信平台)
  7. 【Java】 数组转 List 的三种方式及对比
  8. 差之毫厘谬以千里,要认真才好
  9. ubuntu中微信突然打不开了
  10. Python笔记(6)——函数的定义域