1、在application.properties中配置两个数据库:

# db01 database
spring.datasource.db01.jdbc-url=jdbc:oracle:thin:@127.0.0.1:1521/orcl
spring.datasource.db01.username=lxw
spring.datasource.db01.password=lxw@123
spring.datasource.db01.driverClassName=oracle.jdbc.driver.OracleDriver # db02 database
spring.datasource.db02.jdbc-url=jdbc:oracle:thin:@127.0.0.1:1521/orcl
spring.datasource.db02.username=lxw02
spring.datasource.db02.password=lxw02@123
spring.datasource.db02.driverClassName=oracle.jdbc.driver.OracleDriver

2、建立连个数据源的配置文件:

第一个配置文件:

package com.lxw.lxwDemo.datasource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import javax.sql.DataSource; //表示这个类为一个配置类
@SpringBootConfiguration
//配置mybatis的接口类放的地方
@MapperScan(basePackages = "com.lxw.lxwDemo.mapper.db01", sqlSessionFactoryRef = "db01SqlSessionFactory")
public class db01DataSourceConfig { //将这个对象放入Spring容器中
@Bean(name = "db01DataSource")
//表示这个数据源是默认数据源
@Primary
//读取application.properties中的配置参数映射成为一个对象
//prefix表示参数的前缀
@ConfigurationProperties(prefix = "spring.datasource.db01")
public DataSource getDateSource1() {
return DataSourceBuilder.create().build();
} @Bean(name = "db01SqlSessionFactory")
//表示这个数据源是默认数据源
@Primary
//@Qualifier表示查找Spring容器中名字为test1DataSource的对象
public SqlSessionFactory db01SqlSessionFactory(@Qualifier("db01DataSource") DataSource datasource)
throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(datasource);
bean.setMapperLocations(
//设置mybatis的xml所在位置
new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/db01/*Mapper.xml"));
return bean.getObject();
} @Bean("db01SqlSessionTemplate")
// 表示这个数据源是默认数据源
@Primary
public SqlSessionTemplate db01sqlsessiontemplate(
@Qualifier("db01SqlSessionFactory") SqlSessionFactory sessionfactory) {
return new SqlSessionTemplate(sessionfactory);
} }

第二个配置文件:

package com.lxw.lxwDemo.datasource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import javax.sql.DataSource; //表示这个类为一个配置类
@SpringBootConfiguration
//配置mybatis的接口类放的地方
@MapperScan(basePackages = "com.lxw.lxwDemo.mapper.db02", sqlSessionFactoryRef = "db02SqlSessionFactory")
public class db02DataSourceConfig { @Bean(name = "db02DataSource")
@ConfigurationProperties(prefix = "spring.datasource.db02")
public DataSource getDateSource2() {
return DataSourceBuilder.create().build();
} @Bean(name = "db02SqlSessionFactory")
public SqlSessionFactory db02SqlSessionFactory(@Qualifier("db02DataSource") DataSource datasource)
throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(datasource);
bean.setMapperLocations(
new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/db02/*Mapper.xml"));
return bean.getObject();
} @Bean("db02SqlSessionTemplate")
public SqlSessionTemplate db02sqlsessiontemplate(
@Qualifier("db02SqlSessionFactory") SqlSessionFactory sessionfactory) {
return new SqlSessionTemplate(sessionfactory);
} }

项目结构

springboot mybatis 多数据源整合的更多相关文章

  1. spring-boot (四) springboot+mybatis多数据源最简解决方案

    学习文章来自:http://www.ityouknow.com/spring-boot.html 配置文件 pom包就不贴了比较简单该依赖的就依赖,主要是数据库这边的配置: mybatis.confi ...

  2. springboot + mybatis + 多数据源

    此文已由作者赵计刚薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验 在实际开发中,我们一个项目可能会用到多个数据库,通常一个数据库对应一个数据源. 代码结构: 简要原理: 1) ...

  3. 第九章 springboot + mybatis + 多数据源 (AOP实现)

    在第八章 springboot + mybatis + 多数据源代码的基础上,做两点修改 1.ShopDao package com.xxx.firstboot.dao; import org.spr ...

  4. 【第九章】 springboot + mybatis + 多数据源 (AOP实现)

    在第八章 springboot + mybatis + 多数据源代码的基础上,做两点修改 1.ShopDao package com.xxx.firstboot.dao; import org.spr ...

  5. springboot+mybatis多数据源的事务问题

    1.springboot+mybatis实现多数据源后,针对单个数据源我们可以使用@Transactional(name="xxxTransactionManager") 来指定使 ...

  6. springboot mybatis 多数据源配置

    首先导入mybatis等包,这里就不多说. 下面是配置多数据源和mybatis,每个数据源对应一套mybatis模板 数据源1: package com.aaaaaaa.config.datasour ...

  7. 第八章 springboot + mybatis + 多数据源(转载)

    本篇博客转发自:http://www.cnblogs.com/java-zhao/p/5413845.html 在实际开发中,我们一个项目可能会用到多个数据库,通常一个数据库对应一个数据源. 代码结构 ...

  8. 【第八章】 springboot + mybatis + 多数据源

    在实际开发中,我们一个项目可能会用到多个数据库,通常一个数据库对应一个数据源. 代码结构: 简要原理: 1)DatabaseType列出所有的数据源的key---key 2)DatabaseConte ...

  9. 第八章 springboot + mybatis + 多数据源2(解决循环引用)

    解决了循环引用 1.application.properties #the first datasource jdbc.names:1,2 jdbc1.driverClassName = com.my ...

  10. spring boot(七):springboot+mybatis多数据源最简解决方案

    说起多数据源,一般都来解决那些问题呢,主从模式或者业务比较复杂需要连接不同的分库来支持业务.我们项目是后者的模式,网上找了很多,大都是根据jpa来做多数据源解决方案,要不就是老的spring多数据源解 ...

随机推荐

  1. 在OAuth 2.0模式下使用Spring Cloud Gateway

    Spring Cloud Gateway主要用于以下角色之一: OAuth Client OAuth Resource Server 1  Spring Cloud Gateway as an OAu ...

  2. Kafdrop

    Kafdrop 是一个用于查看 Kafka 主题和浏览消费者组的 Web UI docker run -d --rm -p 9000:9000 \ -e KAFKA_BROKERCONNECT=hos ...

  3. 用于解析FBNeo游戏数据的Python3脚本

    FBNeo在代码中存储了游戏的元数据, 其数据格式为 struct BurnDriver BurnDrvCpsStriderua = { "striderua", "st ...

  4. Hooks与普通函数的区别

    Hooks与普通函数的区别 在这里的Hooks具体指的是自定义Hooks,自定义的Hooks与我们定义的普通函数类似,都可以封装逻辑,以实现逻辑的复用.Hooks实际上是一种特殊的函数,而由于Hook ...

  5. SpringCloud 注册中心Consul实战

    介绍 Consul是HashiCorp公司推出的开源工具,Consul由Go语言开发,部署起来非常容易,只需要极少的可执行程序和配置文件,具有绿色.轻量级的特点.Consul是分布式的.高可用的. 可 ...

  6. New Questions

    1. C++/Qt 实现一个信号槽 #include <functional> #include <iostream> #include <vector> clas ...

  7. 项目实战:Qt多段Y轴折线图框架(双Y轴段折线、支持拽拖、浮动游标显示X值各段Y值、支持大量实时显示下位机数据)

    若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/111660400长期持续带来更多项目与技术分享, ...

  8. queryset高级用法:select_related

    在提取某个模型的数据的同时,也提前将相关联的数据提取出来.比如提取文章数据,可以使用select_related将author信息提取出来,以后再次使用article.author的时候就不需要再次去 ...

  9. 酷睿i5与i7处理器有什么区别

    本文将深入解析酷睿i5与i7处理器的区别,帮助您做出明智的购买决策.购买笔记本之前,了解处理器相关知识至关重要. 处理器作为电脑的核心部件,其性能直接影响整机运行速度和效率. 市面上主流的笔记本处理器 ...

  10. mysql标识列和事务

    1 #标识列 2 /* 3 又称为自增长列 4 含义:可以不用手动的插入值,系统提供默认的序列值 5 6 7 特点: 8 1.标识列必须和主键搭配吗?不一定,但要求是一个key 9 2.一个表可以有几 ...