springmvc 、mybatis整合多个数据源(读写分离)
来源:互联网 发布:地下城盗号软件2017 编辑:程序博客网 时间:2024/05/16 19:36
1、extends AbstractRoutingDataSource
此类注释:
Abstract {@link javax.sql.DataSource} implementation that routes {@link #getConnection()}
calls to one of various target DataSources based on a lookup key. The latter is usually
(but not necessarily) determined through some thread-bound transaction context.
大概意思就是getConnection()根据查找lookup key键对不同目标数据源的调用,通常是通过(但不一定)某些线程绑定的事物上下文来实现。
public class DynamicDataSource extends AbstractRoutingDataSource { @Override public Object determineCurrentLookupKey() { // TODO Auto-generated method stub return DataSourceContextHolder.getCustomerType(); }}
:
2、 上图2个方法分别是setTargetDataSources(注入目标数据源) 和setDefaultTargetDataSource(注入默认的数据源);
可在spring.xml配置
<bean id="dynamicDataSource" class="com.xx.xx.DateSource.DynamicDataSource"> <property name="targetDataSources"> <map key-type="java.lang.String"> <!-- 指定lookupKey和与之对应的数据源 --> <entry key="dataSource" value-ref="dataSource1"></entry> <entry key="dataSource2" value-ref="dataSource2"></entry> </map> </property> <!-- 这里可以指定默认的数据源 --> <property name="defaultTargetDataSource" ref="dataSource1" /> </bean> <!-- 数据源配置 --> <bean id="dataSource1" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass --> <property name="driverClassName" value="${jdbc.driver}" /> <!-- 基本属性 url、user、password --> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean><bean id="dataSource2" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.urll}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dynamicDataSource"/> <property name="typeAliasesPackage" value="com.xx.xx"/> <property name="typeAliasesSuperType" value="com.xx.xx"/> <property name="mapperLocations" value="classpath:/mappings/*.xml"/> <property name="configLocation" value="classpath:/mybatis-config.xml"></property> </bean>
<!-- 定义事务 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dynamicDataSource" /> </bean>
3、
`public class DataSourceContextHolder {
public static final String DATA_SOURCE_MYSQL = "dataSource1"; public static final String DATA_SOURCE_MSSQL = "dataSource2"; //设置当前线程使用dataSource private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>(); public static void setCustomerType(String customerType) { contextHolder.set(customerType); } public static String getCustomerType() { String dataSource = contextHolder.get(); if (StringUtils.isEmpty(dataSource)) { return DATA_SOURCE_MYSQL; }else { return dataSource; } } public static void clearCustomerType() { contextHolder.remove(); }
}`
阅读全文
0 0
- springmvc 、mybatis整合多个数据源(读写分离)
- springmvc 整合多个数据源
- springboot整合多个mybatis数据源
- springmvc+mybatis+mysql 实现读写分离
- spring + mybatis + mysql(主从) 配置多个resource(读写分离)
- 数据源读写分离 -- replication
- 多数据源配置-使用spring配置多个数据源实现读写分离
- springmvc+mybatis+druid+mysql proxy读写分离配置
- MyBatis配置多个数据源
- mybatis链接多个数据源
- 案例-数据源切换读写分离
- mybatis 读写分离
- springboot+mybatis(读写分离)
- SpringMVC+Mybatis多静态数据源配置
- springmvc+mybatis两个数据源
- springmvc(五)springmvc和mybatis整合
- springmvc+mybatis整合springmvc
- spring+mybatis管理多个数据源(非分布式事务)
- JQuery3.1.1源码解读(九)【prevObject】
- SpringApplication 的初始化过程分析 : initialize()
- 论「版本号」的正确使用方式
- Linux下使用VMware安装Win10的网络问题
- AS上利用NDK——CMake方法移植ORB SLAM算法到Android
- springmvc 、mybatis整合多个数据源(读写分离)
- zTree理解和简单Demo
- nginx-upsync-module模块安装
- 2017 Google 开发者大会终于来了!
- MySQL5.7 的安装时一些常用命令和错误
- 比特币挖矿——p2pool矿池
- 如何更“优雅”地部署Kubernetes集群
- Alluxio 1.6.1的安装部署
- CNN在自然语言处理方面的应用总结