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:// ...
随机推荐
- AppCan移动开发技巧:3步走,获取移动APP签名信息
大家知道,在移动APP开发里,与应用包名一样,应用的签名信息需是唯一的,否则将会出现应用冒领.重复安装等问题.之前分享过安卓应用的签名如何获取(点击查看),这里将继续以AppCan平台为例,分享如何获 ...
- Java Selenium中的几种等待方式
Selenium自动化性能测试过程中,经常会出现取不到界面元素,主要原因是界面元素的加载与我们访问页面的时机不一致.可能是界面要素过多或者网络较慢,界面一直加载中:为了解决这种问题,selenium提 ...
- Spring通过注释配置Bean2 关联关系
接着我们讲讲关联关系的配置,我们耳熟能详的MVC结构,Controller关联着Service,Service关联着UserRepository,接着上一节的代码,完成上诉功能 在Main方法里,我们 ...
- ABP拦截器之UnitOfWorkRegistrar(二)
在上面一篇中我们主要是了解了在ABP系统中是如何使用UnitOfWork以及整个ABP系统中如何执行这些过程的,那么这一篇就让我们来看看UnitOfWorkManager中在执行Begin和Compl ...
- git总结一、工作中常用基础命令
首先来了解两个概念: 工作区:比如你的项目目录 暂存区:git和其他版本控制系统的不同之处就是有这个暂存区的概念. .git不是工作区,而是git 版本库,在版本库中存放着很多东西,比如暂存区(sta ...
- 一个解释volatile关键字最好的例子
小例子 public class VolatileTest { private static volatile int INIT_VALUE = 0; private final static int ...
- python一(字符串,字典)
list操作 name = ['小王','小米','小张','王强','张三','李四'] name.append('黄霑')#添加元素在最后一个 name.insert(,'王五')#指定下标插入元 ...
- nodejs 搭建本地静态服务器
1. http-server 参看 https://www.npmjs.com/package/http-server 使用http-server搭建本地静态服务器 全局安装http-server n ...
- Dlib Python 检测人脸特征点 Face Landmark Detection
首先安装Dlib,Opencv库 Dlib安装链接:http://www.cnblogs.com/as3asddd/p/7237280.html 环境:Mac Sierra 10.12.1 Pytho ...
- FixedThreadPool吞掉了异常
为了方便遍描述问题,如下是简化后的 public class RunException { public static void main(String[] args) { ExecutorServi ...