比较常用的配置,多数据源、主从等等。

大概的逻辑是:

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 多数据源配置的更多相关文章

  1. springmvc+mybatis多数据源配置,AOP注解动态切换数据源

    springmvc与springboot没多大区别,springboot一个jar包配置几乎包含了所有springmvc,也不需要繁琐的xml配置,springmvc需要配置多种jar包,需要繁琐的x ...

  2. 学习笔记_J2EE_SSM_01_spring+springMVC+Mybatis整合_XML配置示例

    spring+springMVC+Mybatis整合_XML配置示例 1.概述 spring+springMVC+Mybatis整合  XML配置方式 1.1 测试环境说明 名称 版本 备注 操作系统 ...

  3. (转)springMVC+mybatis+ehcache详细配置

    一. Mybatis+Ehcache配置 为了提高MyBatis的性能,有时候我们需要加入缓存支持,目前用的比较多的缓存莫过于ehcache缓存了,ehcache性能强大,而且位各种应用都提供了解决方 ...

  4. MyBatis多数据源配置(读写分离)

    原文:http://blog.csdn.net/isea533/article/details/46815385 MyBatis多数据源配置(读写分离) 首先说明,本文的配置使用的最直接的方式,实际用 ...

  5. Spring Boot 2.X(五):MyBatis 多数据源配置

    前言 MyBatis 多数据源配置,最近在项目建设中,需要在原有系统上扩展一个新的业务模块,特意将数据库分库,以便减少复杂度.本文直接以简单的代码示例,如何对 MyBatis 多数据源配置. 准备 创 ...

  6. 记录:springmvc + mybatis + maven 搭建配置流程

    前言:不会配置 spring mvc,不知道为什么那样配置,也不知道从何下手,那么看这里就对了. 在 IDEA 中搭建 maven + springmvc + mybatis: 一.在 IDEA 中首 ...

  7. Spring+SpringMVC+Mybatis 多数据源整合(转)

    转载自:http://blog.csdn.net/q908555281/article/details/50316137 目录(?)[-]拷贝所需jar拷贝jar文件需要的jar文件入下图所示因为我的 ...

  8. springboot mybatis 多数据源配置

    首先导入mybatis等包,这里就不多说. 下面是配置多数据源和mybatis,每个数据源对应一套mybatis模板 数据源1: package com.aaaaaaa.config.datasour ...

  9. Spring MVC+Mybatis 多数据源配置及发现的几个问题

    1.CustomerContextHolder 数据源管理类,负责管理当前的多个数据源,基于ThreadLocal实现,对每个线程设置不同的目标数据源 public class CustomerCon ...

随机推荐

  1. 【maven】使用import scope解决maven继承(单)问题

    测试环境 maven 3.3.9 想必大家在做SpringBoot应用的时候,都会有如下代码: <parent> <groupId>org.springframework.bo ...

  2. 【转】每天一个linux命令(41):ps命令

    原文网址:http://www.cnblogs.com/peida/archive/2012/12/19/2824418.html Linux中的ps命令是Process Status的缩写.ps命令 ...

  3. linux的性能优化

    转一位大神的笔记. linux的性能优化: 1.CPU,MEM 2.DISK--RAID 3.网络相关的外设,网卡 linux系统性能分析: top:linux系统的负载,CPU,MEM,SWAP,占 ...

  4. JUC原子类之 原子操作数据类型

    根据修改的数据类型,可以将JUC包中的原子操作类可以分为4类. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ; 数组类型: AtomicInteger ...

  5. POJ3666序列最小差值

    题目:http://poj.org/problem?id=3666 dp方程可以是 d [ i ] [ j ] = min ( d [ i - 1 ] [ k ] ) + abs ( a [ i ] ...

  6. Java JDBC连接Oracle

    1. 安装Oracle数据库,我这里使用的是Oracle 12c 2. 创建Java工程 connection-oracle 注意:使用的JavaSE-1.8 3. 在Oracle的安装目录里,将dj ...

  7. theme为dialog的Activity如何充满全屏

     转自:http://blog.csdn.net/fzh0803/article/details/9787615 分类: android_点滴记录2013-08-06 10:33 2005人阅读 评论 ...

  8. wxWidgets:消息处理流程

    首先解释下EventHandler. wxWidgets中EventHandler并不是简单的指消息(事件)处理函数,而是一个用于处理窗口系统消息的类.收到消息后,wxEventHandler会调用e ...

  9. C++ STL Set 集合

    前言 set是STL中的一种关联容器.集合具有无序性,互异性等特点.熟练使用STL中的set模板类,可以比较简单的解决一些编程问题. 关联容器:元素按照关键字来保存和访问,STL中的map,set就是 ...

  10. 廖雪峰Java1-2Java程序基础-3整数运算

    1.四则运算规则 int i =(100 + 200) * (99 -88);//3300 int n = i + 9;//3309 //除法结果为整数 int q = n / 100;//33 // ...