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文件主数据源配置从数据 ...
随机推荐
- 前端开发在IOS端遇到的一个诡异问题(Delegate 失效)
一.前言 最近同事问到一个问题,一个前端页面在IOS端真机测试下出现一个比较诡异的问题,如果没有遇到过估计也是一筹莫展.今天特此记录一下,或许能帮到后面遇到这个问题的朋友少绕一些弯路.这是关于JQue ...
- 重写titleView
在一些特定的情况下不能使用原有的titleView需要重写titleView代码如下 #import "TitleView.h" @implementation TitleView ...
- C# 基础控制台程序的创建,输出,输入,定义变量,变量赋值,值覆盖,值拼接,值打印
基础学习内容有 Console.WriteLine("要输出的内容");//往外输出内容的 Console.ReadLine(); //等待用户输入,按回车键结束,防止程序闪退 控 ...
- iframe的优缺点?
1.`<iframe>`优点: 解决加载缓慢的第三方内容如图标和广告等的加载问题 Security sandbox 并行加载脚本 2.`<iframe>`的缺点: *ifram ...
- IOS编程学习笔记
@interface -实例对象 +类名 #import "MyClass" @implementation MyClass -(id)initWithString:(NSStri ...
- ArcGIS许可启动问题
前段时间,由于360常常删除重要文件终于发生在我身上.不得已换了电脑管家,清理后再次打开License Server Administrator时,发现启动项怎么也点不动了.而打开服务管理器,却发现A ...
- Myeclipse 搭建Java Web 项目 《一》
今天将图文并茂的介绍如何使用myclipse 创建Java Web 项目;我使用的是myclipse 8.6 来进行创建: 1.打开Myeclipse,点击File --->然后New ---- ...
- 基于CPS变换的尾递归转换算法
前言 众所周知,递归函数容易爆栈,究其原因,便是函数调用前需要先将参数.运行状态压栈,而递归则会导致函数的多次无返回调用,参数.状态积压在栈上,最终耗尽栈空间. 一个解决的办法是从算法上解决,把递归算 ...
- 使用EntityFramework中DbSet.Set(Type entityType)方法碰到的问题
使用的是EntityFramework, Version=6.0.0.0,项目原本直接使用将EntityFramework的Entity拿到UI使用,后面想使用dto对象将数据库的Entity与前台分 ...
- webservice基本功能介绍
WebService, 能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成.依据WebService规范实施的应用之间, 无论它们所使用的语言. 平台或内 ...