ssm多数据源配置
1.在.properties配置文件中 添加第二个数据源信息(type2,driver2,
url2,username2,pawwword2)

2.修改spring-context.xml(src/main/resources/),有3处需要修改/添加
第一处,添加bean id="dataSource2"


第二处(spring-context.xml):修改为sqlSessionFactory bean,将dataSource改为dynamicDataSource

第三处 (spring-context.xml):修改为transactionManager bean
同第二处一样 将ref="dataSource" 改为ref="dynamicDataSource"
并添加 dynamicDataSource bean

3.添加DynamicDataSource.java

package com.thinkgem.wlw.common.db; import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; /**
* 数据源切换方法类
* @author zhouhe
* @version 2018-11-7
*/
public class DynamicDataSource extends AbstractRoutingDataSource {
private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>(); public static String getCurrentLookupKey() {
return (String) contextHolder.get();
} /**
* 设置线程的数据源
* @param currentLookupKey
*/
public static void setCurrentLookupKey(String currentLookupKey) {
contextHolder.set(currentLookupKey);
} @Override
protected Object determineCurrentLookupKey() {
return getCurrentLookupKey();
}
}
4.在Controller中控制数据源
在Controller中方法的开头用 DynamicDataSource.setCurrentLookupKey("dataSource2"); 来切换数据数据源,
这里要注意的是方法结束的时候要把数据源切换回来 DynamicDataSource.setCurrentLookupKey("dataSource");
否则会有问题。

注:这里说一下在jeesite中使用的话要有一点需要注意,就是在修改删除方法中切换数据源的话要在
Controller中的get();方法中加上 DynamicDataSource.setCurrentLookupKey("dataSource2"); 因为在
执行修改,删除方法之前会先执行此方法。

这里要注意,切换数据源不能放到事务里面,否则会导致无法切换
还有一个问题,这里的数据源切换可能会出现数据库连接超时timeout现象,需要设置如下:
一:数据库连接加上 autoReconnect=true;(当数据库连接异常中断时,是否自动重新连接?)

二:mysql中my.ini文件添加(这里设置完需要重启mysql)
wait_timeout=
interactive_timeout=
ssm多数据源配置的更多相关文章
- mysql之整合ssm多数据源配置
一,基于SSM框架的多数据源配置 1.创建DynamicDataSourceHolder用于持有当前线程中使用的数据源标识 public class DynamicDataSourceHolder { ...
- hibernate与ssm多数据源配置
hibernate: 1.配置多个数据源,比如2个:hibernate.cfg1.xml~hibernate.cfg8.xml <?xml version='1.0' encoding='UTF ...
- SSM框架之多数据源配置
多数据源的应用场景:主要是数据库拆分后,怎样让多个数据库结合起来来达到业务需求. SSM框架(Spring+SpringMVC+MyBatis(MyBatis-Plus))是目前最常用的,此次仍然是m ...
- Javaweb配置最全的数据源配置
DBCP DBCP是Apache推出的数据库连接池(Database Connection Pool). 操作步骤: 添加jar包: commons-dbcp-1.4.jar commons-pool ...
- Spring实现多数据源配置
一.前言 对于小型项目,服务器与数据库是可以在同一台机子上的,但随着业务的庞大与负责,数据库和服务器就会分离开来.同时随着数据量的增大,数据库也要分开部署到多台机子上. 二.Spring配置文件修改 ...
- SSM框架的配置Spring+Springmvc +Mybatis
ssm框架是由spring mvc +spring+mybatis组成 快速阅读 通过spring的配置文件spring.xml,在servlet中指定spring mvc的配置文件spring-mv ...
- ssm框架文件配置
1 简介 Spring MVC (web level),采取 MVC 架构,意图取代麻烦的 Servlet 写法,简化 web 层 MyBatis (dao level),意图取代 jdbc 操作数据 ...
- 使用springboot + druid + mybatisplus完成多数据源配置
一. 简介 1. 版本 springboot版本为2.0.3.RELEASE,mybatisplus版本为2.1.9, druid版本为1.1.9,swagger版本为2.7.0 2. 项目地址 ...
- JAVA spring hibernate 多数据源配置记录
数据源配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:// ...
随机推荐
- 网络流 E - Escape HDU - 3605
2012 If this is the end of the world how to do? I do not know how. But now scientists have found tha ...
- 【spring源码分析】IOC容器初始化(三)
前言:在[spring源码分析]IOC容器初始化(二)中已经得到了XML配置文件的Document实例,下面分析bean的注册过程. XmlBeanDefinitionReader#registerB ...
- 我们为什么要使用RabbitMQ?
一.前言 这篇文章就是讲RabbitMQ的好处,你可能要说RocketMQ很好呀,我们主要看上的就是RabbitMQ支持多语言的客户端,很符合我们公司的现状,不要我们花费功夫去搞一个客 ...
- Kubernetes 网络排错指南
本文介绍各种常见的网络问题以及排错方法,包括 Pod 访问异常.Service 访问异常以及网络安全策略异常等. 说到 Kubernetes 的网络,其实无非就是以下三种情况之一 Pod 访问容器外部 ...
- codeforces#1154F. Shovels Shop (dp)
题目链接: http://codeforces.com/contest/1154/problem/F 题意: 有$n$个物品,$m$条优惠 每个优惠的格式是,买$x_i$个物品,最便宜的$y_i$个物 ...
- Spring Boot 集成Swagger
Spring Boot 集成Swagger - 小单的博客专栏 - CSDN博客https://blog.csdn.net/catoop/article/details/50668896 Spring ...
- MySQL之执行流程
最近开始在学习mysql相关知识,自己根据学到的知识点,根据自己的理解整理分享出来,本篇文章会分析下一个sql语句在mysql中的执行流程,包括sql的查询在mysql内部会怎么流转,sql语句的更新 ...
- PHP开发高可用高安全App后端
基于thinkphp5开发的APP,涵盖阿里大于,七牛云图片上传,RestfulApi,短信验证, 需要联系我:QQ:1844912514
- 获取url参数值(可解码中文值)
/** * 根据指定参数名称获取参数值 * @param {String} urlStr 参数名称 * @return {Object} 参数值 * */ getUrlParams = functio ...
- postgresql数据库去重方法
数据库去重有很多方法,下面列出目前理解与使用的方法 第一种 通过group by分组,然后将分组后的数据写入临时表然后再写入另外的表,对于没有出现再group by后面的field可以用函数max,m ...