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文件主数据源配置从数据 ...
随机推荐
- 锁 和 CopyOnWrite的实现
1.普通锁 只有lock功能, Java实现:ReentrantLock lock = new ReentrantLock(); lock和unlock: lock.lock(); lock.unlo ...
- linux开机自启动服务优化设置命令
1.设置成英文字符,避免出现乱码[root@xuegod62 ~]# LANG=en2.两种配置linux开机自启动服务命令:1)[root@xuegod62 ~]# ntsysv2)[root@xu ...
- 测试员浅谈App测试的重点
近年来,手机app也时持续大热.基于安卓和ios的手机app,更是受到众多投资者的青睐.而手机软件测试行业也是如此. 现在听的最多的是web测试和App测试,但实际上两者本质上没有什么区别,性质都一样 ...
- http-server 使用介绍
做一个项目的时候需要服务环境,又不想使用apache,php,于是找到一款比较简单的易用的webserver 就是http-server 首先介绍一个怎么使用吧,http-server 是基于node ...
- 源码(07) -- java.util.Iterator<E>
java.util.Iterator<E> 源码分析(JDK1.7) ----------------------------------------------------------- ...
- Class path contains multiple SLF4J bindings
[logback不同版本jar包] SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:fi ...
- ContextMenu控件引用以及不用v4包的方法
最近想撸个APP出来玩玩,本想用Yalantis出的SideMenu,结果因为依赖问题放弃了,改用他们家的ContextMenu. 如果你用了v4包 那么问题就比较简单了,直接打开项目中app中的bu ...
- HUST 1584 摆放餐桌
1584 - 摆放餐桌 时间限制:1秒 内存限制:128兆 609 次提交 114 次通过 题目描述 BG准备在家办一个圣诞晚宴,他用一张大桌子招待来访的客人.这张桌子是一个圆形的,半径为R.BG邀请 ...
- 【翻译】Jay Kreps - 为何流处理中局部状态是必要的
译者注: 原文作者是 Jay Kreps,也是那篇著名的<The Log: What every software engineer should know about real-time da ...
- JavaScript中国象棋程序(7) - 置换表
"JavaScript中国象棋程序" 这一系列教程将带你从头使用JavaScript编写一个中国象棋程序.这是教程的第2节. 这一系列共有9个部分: 0.JavaScript中国象 ...