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 ...
随机推荐
- test20180830
所有试题限制均为128MB,1Sec 总分100(•́へ•́╬). 试题一 A题 问题描述: Bob 有 n 个士兵,他们排成一列按照从左到右编号为 1 到 n,每个士兵都有自己的 IQ 值,Bob ...
- day2-Iptables笔记
1. iptables防火墙简介 Iptables也叫netfilter是Linux下自带的一款免费且优秀的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入.流出.流经服务器的数 ...
- 用户态监控网络接口up、down事件
网上搜索(https://blog.csdn.net/qq123386926/article/details/50695725)可以直接使用netlink现成的接口实现: #include <s ...
- TensorFlow笔记-07-神经网络优化-学习率,滑动平均
TensorFlow笔记-07-神经网络优化-学习率,滑动平均 学习率 学习率 learning_rate: 表示了每次参数更新的幅度大小.学习率过大,会导致待优化的参数在最小值附近波动,不收敛:学习 ...
- storm之 Storm 工作原理
Storm 工作原理 Storm简介 1.Storm是一套分布式的.可靠的,可容错的用于处理流式数据的系统. 2.Storm也是基于C/S架构来进行工作的,C负责将数据处理的方式的jar(Topolo ...
- 开发vue全局插件的4种方式
定义全局插件的步骤 定义全局插件 pluginsUtil.js Vue.js 的插件应当有一个公开方法 install .这个方法的第一个参数是 Vue 构造器,第二个参数是一个可选的选项对象: ex ...
- JSOI2008——星球大战
题目:https://www.luogu.org/problemnew/show/1197 并查集. 难点是若依次去掉点在求连通块个数,时间太长. 精妙的思维:先全部读入,再逆向求连通块个数——增加点 ...
- php设计模式之职责链模式
<?php /** * @desc php设计模式之职责链模式(责任链模式) 定义:顾名思义,责任链模式为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这 ...
- Densenet 相关
https://github.com/flyyufelix/DenseNet-Keras
- sqlvarchar后自动填充空格解决办法(SET ANSI_PADDING)
SET ANSI_PADDING http://www.yesky.com/imagesnew/software/tsql/ts_set-set_2uw7.htm http://www.makaido ...