Spring Boot学习(二):mybatis + druid + 多数据源自动切换

本文介绍了如何在Spring Boot项目中实现mybatis和druid结合,以支持多数据源自动切换。主要内容包括环境配置、pom.xml与application.properties的修改、枚举类DataSourceType、数据源初始化、动态数据源路由、自定义注解及切面处理,以及调用类和接口的编写。注意事项强调了@TargetDataSource注解的正确使用位置。
摘要由CSDN通过智能技术生成

目录

一、简介

二、环境准备

三、代码改造

四、注意事项

五、参考资料



一、简介

闲言碎语不多说:项目中要用到多数据源分别管理数据,主数据源存储正式数据,从数据源存储预加载的数据并完成预校验。

二、环境准备

eclipse + maven + Spring Boot + mybatis + oracle

三、代码改造

pom.xml文件中添加依赖

<!--alibaba连接池 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.5</version>
</dependency>

application.properties文件中主从数据源配置

#====================================================================================
# 数据源配置
#====================================================================================
#数据源基础配置信息==============
datasource.base.poolPreparedStatements = false
datasource.base.type=com.alibaba.druid.pool.DruidDataSource
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
datasource.base.timeBetweenEvictionRunsMillis = 60000
#配置一个连接在池中最小生存的时间,单位是毫秒
datasource.base.minEvictableIdleTimeMillis = 30000
#检测查询
datasource.base.validationQuery = select 'x' FROM DUAL
datasource.base.testWhileIdle = true
datasource.base.testOnBorrow = false
datasource.base.testOnReturn = false
datasource.base.maxPoolPreparedStatementPerConnectionSize = 20
#配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
datasource.base.filters = stat,wall,slf4j

#主数据源==============================
#数据库地址
datasource.master.jdbcUrl=jdbc:oracle:thin:@192.168.10.111:1521:orcl
#数据库用户名
datasource.master.username=user1
#数据库密码
datasource.master.password=user1
#数据库驱动器
datasource.master.driver-class-name=oracle.jdbc.OracleDriver
#最大空闲连接: 连接池中容许保持空闲状态的最大连接数量,超过的空闲连接将被释放, 如果设置为负数表示不限制
datasource.master.max-idle=10
#最小空闲连接: 连接池中容许保持空闲状态的最小连接数量, 低于这个数量将创建新的连接, 如果设置为0 则不创建
datasource.master.min-idle=10
#最大等待时间: 当没有可用连接时, 连接池等待连接被归还的最大时间( 以毫秒计数), 超过时间则抛出异常, 如果设置为-1 表示无限等待
datasource.master.max-wait=10000
#连接池最大使用连接数量
datasource.master.max-active=300
#初始化连接: 连接池启动时创建的初始化连接数量
datasource.master.initial-size=50

#其它数据源==============================
#数据库地址
datasource.slave.jdbcUrl=jdbc:oracle:thin:@192.168.10.112:1521:orcl
#数据库用户名
datasource.slave.username=user2
#数据库密码
datasource.slave.password=user2
#数据库驱动器
datasource.slave.driver-class-name=oracle.jdbc.OracleDriver
#最小空闲连接: 连接池中容许保持空闲状态的最小连接数量, 低于这个数量将创建新的连接, 如果设置为0 则不创建
datasource.slave.min-idle=10
#最大等待时间: 当没有可用连接时, 连接池等待连接被归还的最大时间( 以毫秒计数), 超过时间则抛出异常, 如果设置为-1 表示无限等待
datasource.slave.max-wait=10000
#连接池最大使用连接数量
datasource.slave.max-active=300
#初始化连接: 连接池启动时创建的初始化连接数量
datasource.slave.initial-size=5

 定义主从数据源枚举类DataSourceType.java

package service.db.datasource;

public enum DataSourceType {
	// 主库
	Master("master"),
	// 从库
	Slave("slave");

	private String dSName;

	private DataSourceType(String dSName) {
		this.dSName = dSName;
	}

	public String getDsName() {
		return dSName;
	}

	public void setDsName(String dSName) {
		this.dSName = dSName;
	}
}

读取application.properties中的配置信息,初始化主从数据源DynamicDataSourceRegister.java

package service.db.datasource;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

import javax.sql.DataSource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.MutablePropertyValues;
import org.springframework.beans.PropertyValues;
impo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值