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 ...
随机推荐
- (精)字符串,map -> json对象->map(初学者必读)
import java.util.LinkedList; import java.util.*; import java.util.ListIterator; import net.sf.json.J ...
- 在oracle的连接(join)中使用using关键字
如果是使用natraul join,并且两张表中如果有多个字段是具有相同的名称和数据类型的,那么这些字段都将被oracle自作主张的将他们连接起来. 但实际上我们有时候是不需要这样来连接的.我们只需要 ...
- mysql的一些 参数查询
1 查询 事务 超时时间: SHOW GLOBAL VARIABLES LIKE 'innodb_lock_wait_timeout'; (默认innodb引擎事务的超时时间) 2 查询事务隔离级别 ...
- nginx信号量
nginx信号说明相关说明 信号名称 作用 TERM,INT 快速关闭 QUIT 从容关闭 HUP 重新加载配置,用新的配置开始新的工作进程,从容关闭旧的工作进程 USR1 重新打开日志文件 USR2 ...
- Postgresql 创建账户,修改密码
sudo su postgres psql \password postgres输入密码\q 本机调试的时候,最好在装完以后添加一个pgsql的管理员帐号,否则phppgadmin不让登陆 创建用户 ...
- wxWidgets:消息处理流程
首先解释下EventHandler. wxWidgets中EventHandler并不是简单的指消息(事件)处理函数,而是一个用于处理窗口系统消息的类.收到消息后,wxEventHandler会调用e ...
- virtualbox centos 网络配置
https://www.centos.bz/2017/08/virtualbox-centos7-nat-bridge/
- (unittest之装饰器(@classmethod)) 让多个测试用例在一个浏览器里面跑 的方法
一.装饰器 1.用setUp与setUpClass区别 setup():每个测试case运行前运行teardown():每个测试case运行完后执行setUpClass():必须使用@classmet ...
- HDU 2066 一个人的旅行 (Dijkstra算法)
一个人的旅行 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submis ...
- 【精】Linux磁盘I/O性能监控之iostat详解
[精]Linux磁盘I/O性能监控之iostat详解 Linux命令详解----iostat 使用iostat分析IO性能