SpringMVC + Mybatis 多数据源配置
比较常用的配置,多数据源、主从等等。
大概的逻辑是:
1、spring-mybatis.xml中配置多个数据源
2、使用Spring提供的AbstractRoutingDataSource类来根据请求路由到不同的数据源
3、ThreadLocal解决线程安全问题
详情参考:
【Java】一次SpringMVC+ Mybatis 配置多数据源经历
利用Spring的AbstractRoutingDataSource解决多数据源的问题
spring官网demo:Dynamic DataSource Routing
一直没调通,切换后仍是默认数据库!!!
=================放弃spring动态数据源,用mybatis的environments来解决=============
关于mybatis的environments,请查询官网文档:http://www.mybatis.org/mybatis-3/zh/configuration.html#environments
一、mybatis-conf.xml 配置两个数据源:<environment id="env_stg">,<environment id="env_vtp">
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC
"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 引入配置文件 -->
<properties resource="jdbc.properties"/>
<settings>
<!-- 驼峰命名自动映射 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- bean短别名 -->
<typeAliases>
<package name="qa.vop.model" />
</typeAliases>
<!-- 多环境配置 -->
<environments default="env_stg">
<environment id="env_stg">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
<environment id="env_vtp">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url_vtp}" />
<property name="username" value="${username_vtp}" />
<property name="password" value="${password_vtp}" />
</dataSource>
</environment>
</environments>
<!-- xml映射文件 -->
<mappers>
<package name="qa.vop.dao"/>
</mappers>
</configuration>
二、写一个类,根据不同的环境来build SqlSessionFactory
public class MySQLSessionFactory {
private SqlSessionFactory sqlSessionFactory = null;
public SqlSessionFactory getSqlSessionFactory(String cfgFilePath,String env) {
InputStream is = null;
try {
is = Resources.getResourceAsStream("mybatis-conf.xml");
if (null == env || env.isEmpty()) {
sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
} else {
sqlSessionFactory = new SqlSessionFactoryBuilder().build(is,env);
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
return sqlSessionFactory;
}
}
三、controller中,根据不同环境,来切换数据源。
@Controller
public class SuperController{ private static final String MYBATIS_CFG = "mybatis-conf.xml";
private static SqlSession session = new MySQLSessionFactory().getSqlSessionFactory(MYBATIS_CFG,null).openSession(); @RequestMapping("/queryJit")
public ModelAndView getJit(ModelAndView mv){
mv.addObject("jitList", session.getMapper(JitMapper.class).selectAllJits() );
mv.setViewName("jit");
return mv;
} @RequestMapping("/queryVTP")
public ModelAndView getVTPRunResult(ModelAndView mv){
SqlSession session1 = new MySQLSessionFactory().getSqlSessionFactory(MYBATIS_CFG,"env_vtp").openSession();
mv.addObject("vtpRunResultList", session1.getMapper(VtpRunResultMapper.class).selectAllResults() );
mv.setViewName("quality-vtp");
return mv;
}
}
SpringMVC + Mybatis 多数据源配置的更多相关文章
- springmvc+mybatis多数据源配置,AOP注解动态切换数据源
springmvc与springboot没多大区别,springboot一个jar包配置几乎包含了所有springmvc,也不需要繁琐的xml配置,springmvc需要配置多种jar包,需要繁琐的x ...
- 学习笔记_J2EE_SSM_01_spring+springMVC+Mybatis整合_XML配置示例
spring+springMVC+Mybatis整合_XML配置示例 1.概述 spring+springMVC+Mybatis整合 XML配置方式 1.1 测试环境说明 名称 版本 备注 操作系统 ...
- (转)springMVC+mybatis+ehcache详细配置
一. Mybatis+Ehcache配置 为了提高MyBatis的性能,有时候我们需要加入缓存支持,目前用的比较多的缓存莫过于ehcache缓存了,ehcache性能强大,而且位各种应用都提供了解决方 ...
- MyBatis多数据源配置(读写分离)
原文:http://blog.csdn.net/isea533/article/details/46815385 MyBatis多数据源配置(读写分离) 首先说明,本文的配置使用的最直接的方式,实际用 ...
- Spring Boot 2.X(五):MyBatis 多数据源配置
前言 MyBatis 多数据源配置,最近在项目建设中,需要在原有系统上扩展一个新的业务模块,特意将数据库分库,以便减少复杂度.本文直接以简单的代码示例,如何对 MyBatis 多数据源配置. 准备 创 ...
- 记录:springmvc + mybatis + maven 搭建配置流程
前言:不会配置 spring mvc,不知道为什么那样配置,也不知道从何下手,那么看这里就对了. 在 IDEA 中搭建 maven + springmvc + mybatis: 一.在 IDEA 中首 ...
- Spring+SpringMVC+Mybatis 多数据源整合(转)
转载自:http://blog.csdn.net/q908555281/article/details/50316137 目录(?)[-]拷贝所需jar拷贝jar文件需要的jar文件入下图所示因为我的 ...
- springboot mybatis 多数据源配置
首先导入mybatis等包,这里就不多说. 下面是配置多数据源和mybatis,每个数据源对应一套mybatis模板 数据源1: package com.aaaaaaa.config.datasour ...
- Spring MVC+Mybatis 多数据源配置及发现的几个问题
1.CustomerContextHolder 数据源管理类,负责管理当前的多个数据源,基于ThreadLocal实现,对每个线程设置不同的目标数据源 public class CustomerCon ...
随机推荐
- TensorFlow笔记-08-过拟合,正则化,matplotlib 区分红蓝点
TensorFlow笔记-08-过拟合,正则化,matplotlib 区分红蓝点 首先提醒一下,第7讲的最后滑动平均的代码已经更新了,代码要比理论重要 今天是过拟合,和正则化,本篇后面可能或更有兴趣, ...
- IBM WebSphere MQ介绍安装以及配置服务详解(转)
首先介绍一下MQ MQ消息队列的简称是一种应用程序对应用程序的通信方法.说白了也就是通过队列的方式来对应用程序进行数据通信.而无需专用链接来链接它们. MQ的通讯方式 1.数据报的方式 Datagra ...
- C51 头文件中的 extern
C51 头文件使用 extern 的目的是声明外部变量或函数. 使用注意: 只放在 .h 文件中. 声明时不用赋值. extern 只是声明不是定义.
- 【转】每天一个linux命令(28):tar命令
原文网址:http://www.cnblogs.com/peida/archive/2012/11/30/2795656.html 通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候 ...
- IplImage的数据结构以及遍历方法
一般我们需要对图像直接进行操作的时候,需要知道图像存储的数据结构,这要也就知道了它的遍历方式 在opencv2.4.4版本下,IplImage的数据结构如下(貌似在别的版本下差别也不会太大) 其中比较 ...
- 【python】class之类的内建函数
- WPF Demo7
没有Path/Source的数据绑定 本地local资源用法 namespace Demo9 { public class Student { private string name; public ...
- VBA注释临时
Sub shishi() '按ABCDE为多选题定义答案; 'A.沙利度胺 B.异烟肼 C.利福平 'd.氯法齐明 E.氨苯砜 '46.各型麻风病的首选药物为(D) 'A.沙利度胺 B.异烟肼 C.利 ...
- 【Spring学习笔记-5.1】Spring容器-父子容器
来自为知笔记(Wiz)
- linux中convert用法
转: 强大的convert命令 convert命令可以用来转换图像的格式,支持JPG, BMP, PCX, GIF, PNG, TIFF, XPM和XWD等类型,下面举几个例子: convert ...