分包的同学点这里:Spring MyBatis多数据源(分包)
创建基本的包entity service dao 为了区分多数据源 一个用的是Mysql 一个是Oracle 方便测试,
创建MyBatis dao 映射 xml 文件
创建db.properties
我这里设置了2个数据源
创建Mybatis.xml 文件
建议创建2个,也可以创建一个.但是2个 耦合性降低
还需要用到工具类:
package com.cp.util.datasources;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
/**
* 动态切换数据库
*
* @author Joey
* @project:SSM_MultiDataSource_CP
* @date:2017年4月27日
*
*/
public class DynamicDataSource extends AbstractRoutingDataSource {
@Override
protected Object determineCurrentLookupKey() {
return DataSourceContextHolder.getDbType();
}
}
package com.cp.util.datasources;
/**
* 数据库切换的工具类
*
* @author Joey
* @project:SSM_MultiDataSource_CP
* @date:2017年4月27日
*
*/
public class DataSourceContextHolder {
public static final String DATA_SOURCE_A = "dataSource1";
public static final String DATA_SOURCE_B = "dataSource2";
/** 数据源类型 */
private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
/**
* 设置数据源类型
*
* @param dbType
* 数据源类型
*/
public static void setDbType(String dbType) {
contextHolder.set(dbType);
}
/**
* 获取数据源类型
*
* @return String
*/
public static String getDbType() {
return ((String) contextHolder.get());
}
/**
* 清除数据源类型
*/
public static void clearDbType() {
contextHolder.remove();
}
}
package com.cp.util.datasources;
import java.lang.reflect.Method;
import org.springframework.aop.AfterReturningAdvice;
import org.springframework.aop.MethodBeforeAdvice;
/**
* 数据源前置增强
*
* @author Joey
* @project:SSM_MultiDataSource_CP
* @date:2017年4月28日
*
*/
public class DataSourceAspect implements MethodBeforeAdvice,
AfterReturningAdvice {
@Override
public void afterReturning(Object returnValue, Method method,
Object[] args, Object target) throws Throwable {
DataSourceContextHolder.clearDbType();
}
@Override
public void before(Method method, Object[] args, Object target)
throws Throwable {
if (method.isAnnotationPresent(DataSource.class)) {
DataSource datasource = method.getAnnotation(DataSource.class);
DataSourceContextHolder.setDbType(datasource.value());
} else {
DataSourceContextHolder
.setDbType(DataSourceContextHolder.DATA_SOURCE_A);
}
}
}
package com.cp.util.datasources;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 动态数据源(default:DataSourceContextHolder.DATA_SOURCE_A)
*
* @author Joey
* @project:SSM_MultiDataSource_CP
* @date:2017年4月28日
*
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Documented
public @interface DataSource {
String value() default DataSourceContextHolder.DATA_SOURCE_A;
}
Spring配置文件 :
配置扫描包.
导入数据源连接信息
设置2个数据源
我使用的是Druid 个人觉得不错。推荐一下
Druid的日志记录Filter
DynamicDataSource类是你刚刚自定义的工具类,上面有
导入2个数据源,默认数据源是DataSource1
事物管理 和 开启事物自动扫描注解
加上前置增强 DataSourceAspect类也是你刚刚自定义的工具类,上面有
最重要的一步:
开启AOP注解支持
方法注解使用多数据源
在service里的方法要使用不同的数据源
方法直接注解:
@DataSource(DataSourceContextHolder.DATA_SOURCE_B)
默认的使用是A 可以自己配置
注意: DataSourceContextHolder类里的DATA_SOURCE_A 和 DATA_SOURCE_B 的值要和spring配置文件对应
可以自己去试试
附上楼主的源码
亲,点我去下载
chuagn 创建
分享到:
相关推荐
spring整合mybatis多数据源切换 可以运行的demo实例
spring mybatis 多数据源动态切换
spring boot mybatis多数据源最简解决方案,说起多数据源,一般都来解决那些问题呢,主从模式或者业务比较复杂需要连接不同的分库来支持业务。
SSM(Spring+SpringMVC+MyBatis)多数据源配置框架,精简版
Spring+SpringMVC+Mybatis多数据源整合。基于spring3.0和mybatis3.2的
spring boot 2多数据源,里面有hibernate和mybatis的多数据源代码。代码拿过去即可集成使用。
springboot mybatis多数据源加事务嵌套 事务之间的调用 回滚 亲测可用 定义2个库分别建立 CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户编号', `user_name` varchar(25) ...
基于 spring 与 mybatis 的 多数据源的配置原理与实现
Spring下mybatis多数据源配置
springboot实现对mysql数据库多数据源,通过配置文件设置主数据源和其他数据源访问不同的数据库
主要介绍了Spring3 整合MyBatis3 配置多数据源动态选择SqlSessionFactory详细教程,需要的朋友可以参考下
STS下spring boot、mybatis多数据源配置源码工程
mybatis+spring实现动态切换数据源,修改数据源配置信息之后,直接运行test可进行测试
NULL 博文链接:https://yangguowen.iteye.com/blog/2086104
springboot + mybatis(通用mapper) + HikariCP(比durid更快)多数据源,从此单表的xml文件和crud就不需要自己写了
Spring+SpringMVC+Mybatis多数据源整合,修改相关配置可以直接使用。
spring+mybatis 多个数据源调用示例
NULL 博文链接:https://bijian1013.iteye.com/blog/2435610
SpringMybatis Spring / Mybatis多数据源 Spring中的Mybatis多数据源集成。 你好? 上周使用spring4 + mybatis3.3 + dbcp 我们将上传解决连接多个数据源部分内容的内容。 Spring版:4.2.0 mybatis版本:3.3.0 ...
springboot+druid+mybatis多数据源动态切换,基于sql类型完成读写分离操作