Spring-Mybatis配置多数据源
可以参考: http://www.cnblogs.com/ityouknow/p/6102399.html
需要一个DatabaseConfiguration类,实现 TransactionManagementConfigurer 接口。
针对每一个数据源的配置主要分为3步:
1. 配置DataSource
2.配置创建sqlSessionFactoryBean的方法,来生成对应该数据源的bean
3.配置mapper(dao)扫描的包
值得注意的是,该配置类需要制定一个主数据源,一般用@Primary注解
下面是代码概览:
/**
* Created by sonofelice on 17/2/23.
*/
@Configuration
@Slf4j
public class DatabaseConfiguration implements TransactionManagementConfigurer { /*------------------------ test1 db -------------------------------*/
@Value("${test1.isEmbedded:true}")
Boolean test1DatabaseIsEmbedded; @Value("${test1.database.url:}")
String test1DatabaseUrl; @Value("${test1.database.username:}")
String test1DatabaseUsername; @Value("${test1.database.password:}")
String test1DatabasePassword; @Bean(name = "test1DataSource")
public DataSource test1DataSource() {
DataSourceConfig config = new DataSourceConfig()
.withIsEmbedded(test1DatabaseIsEmbedded)
.withDatabaseUrl(test1DatabaseUrl)
.withDatabaseUsername(test1DatabaseUsername)
.withDatabasePassword(test1DatabasePassword);
return DataSourceGenerator.getDataSource(config);
} @Bean(name = "test1SqlSessionFactory")
public SqlSessionFactoryBean test1SqlSessionFactory() throws Exception {
return new CustomSqlSessionFactoryBean(test1DataSource());
} @Configuration
@MapperScan(basePackages = "com.test1.mapper.stat",
sqlSessionFactoryRef = "test1SqlSessionFactory")
@Primary
public static class Test1MapperConfiguration { } /*------------------------ test2 db -------------------------------*/
@Value("${test2.database.isEmbedded:true}")
Boolean test2DatabaseIsEmbedded; @Value("${test2.database.url:}")
String test2DatabaseUrl; @Value("${test2.database.username:}")
String test2DatabaseUsername; @Value("${test2.database.password:}")
String test2DatabasePassword; @Bean(name = "test2DataSource")
public DataSource mktDataSource() {
DataSourceConfig config = new DataSourceConfig()
.withIsEmbedded(test2DatabaseIsEmbedded)
.withDatabaseUrl(test2DatabaseUrl)
.withDatabaseUsername(test2DatabaseUsername)
.withDatabasePassword(test2DatabasePassword);
return DataSourceGenerator.getDataSource(config);
} @Bean(name = "test2SqlSessionFactoryBean")
public SqlSessionFactoryBean test2SqlSessionFactory() throws Exception {
return new CustomSqlSessionFactoryBean(test2DataSource());
} @Configuration
@MapperScan(basePackages = "com.test2.mapper.mkt",
sqlSessionFactoryRef = "test2SqlSessionFactoryBean")
public static class MktMapperConfiguration { } /*------------------------ end --------------------------------*/ @Override
public PlatformTransactionManager annotationDrivenTransactionManager() {
return txManager();
} public PlatformTransactionManager txManager() {
return new DataSourceTransactionManager(test2StatDataSource());
}
}
配置好了之后就可以用了。不需要配置xml文件。
Spring-Mybatis配置多数据源的更多相关文章
- spring+myBatis 配置多数据源,切换数据源
注:本文来源于 tianzhiwuqis <spring+myBatis 配置多数据源,切换数据源> 一个项目里一般情况下只会使用到一个数据库,但有的需求是要显示其他数据库的内容,像这样 ...
- spring+mybatis 配置双数据源
配置好后,发现网上已经做好的了, 不过,跟我的稍有不同, 我这里再拿出来现个丑: properties 文件自不必说,关键是这里的xml: <?xml version="1.0&quo ...
- 如何通过Spring Boot配置动态数据源访问多个数据库
之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...
- Spring Boot + Mybatis 配置多数据源
Spring Boot + Mybatis 配置多数据源 Mybatis拦截器,字段名大写转小写 package com.sgcc.tysj.s.common.mybatis; import java ...
- Spring+Mybatis配置
Spring+Mybatis配置 之前做项目的时候用到了spring+mybatis框架,一直想抽空整理一下 Mybatis: mybatis是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架 ...
- SpringBoot集成Mybatis配置动态数据源
很多人在项目里边都会用到多个数据源,下面记录一次SpringBoot集成Mybatis配置多数据源的过程. pom.xml <?xml version="1.0" encod ...
- springboot入门系列(四):SpringBoot和Mybatis配置多数据源连接多个数据库
SpringBoot和Mybatis配置多数据源连接多个数据库 目前业界操作数据库的框架一般是 Mybatis,但在很多业务场景下,我们需要在一个工程里配置多个数据源来实现业务逻辑.在SpringBo ...
- springboot和mybatis 配置多数据源
主数据源(由于代码没有办法复制的原因,下面图片和文字不一致) package com.zhianchen.mysqlremark.toword.config;import com.zaxxer.hik ...
- Spring动态配置多数据源
Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性.而这样的方案就会不同于常见的单一数据实例的方案,这就要程序在运行时根据当时 ...
- Spring Boot配置多数据源并实现Druid自动切换
原文:https://blog.csdn.net/acquaintanceship/article/details/75350653 Spring Boot配置多数据源配置yml文件主数据源配置从数据 ...
随机推荐
- 智能指针shared_ptr
// 智能指针会自动释放所指向的对象. // shared_ptr的应用场景是:程序需要在多个对象间共享数据 /* 先从应用场景入手吧,说矿工A发现了一个金矿. * 然后矿工A喊来了矿工B,一起开采, ...
- block之---数据传递
block值传递分为两种情况 1.值传递 含义: 类似于函数参数的值传递,block内部对值的改变对外部没有影响,外部改变对block内部也没有影响. 情况 block访问外部局部变量没有被任何关键字 ...
- 安卓UDP通信
功能: 实现了单次一发一收: import java.net.*; import java.io.*; public class udpRecv { /* * 创建UDP传输的接收端 * 1.建立ud ...
- Trick 小记
1.\[P(A|BC) = \frac{P(AB|C)}{P(B|C)}\] 2. In EM algorithm, the usual expectation function can be wri ...
- 【Zookeeper】源码分析之请求处理链(二)
一.前言 前面学习了请求处理链的RequestProcessor父类,接着学习PrepRequestProcessor,其通常是请求处理链的第一个处理器. 二.ZooKeeper源码分析 2.1 类的 ...
- [JAVA] - Java OutOfMemoryError分类
Java OutOfMemoryError一般常遇到的分为两类,分别提示: "Java heap space" 和 "PermGen space",前面的是指j ...
- 基于Quartz.NET框架的WinForm任务计划管理工具
最近接到一个小需求 ——可以定期同步20个Sql Server 7.0数据库里的数据(数据量会预计>10000),并保存为cvs格式文件 ——可以设置保存文件数据量 ——该应用需要用WinFor ...
- vim + DoxygenToolkit.vim环境搭建
1. :DoxLic --->添加版权 2. :DoxAuthor---->文件头 3. :Dox----> 函数注释 安装过程: 1. 创建目录 ~/.vim/pl ...
- [Hadoop] - Protocol Buffer安装
Hadoop从2.x版本开始,底层的RPC远程调用使用ProtocolBuffer格式来传递数据,所以在编译Hadoop的过程中有可能出现提示缺少Protocol服务的异常信息,类似:'protoc ...
- 最新虚拟机SAP ECC6.0 EHP7带示例数据IDES版+BW740
学习SAP,需要虚拟机,请联系QQ:858-048-581 版本:ECC6.0 EHP7.虚拟机操作系统:windows server 2008 64bit..数据库:SQL2008 R2.系统已经做 ...