springboot mybatis 多数据源整合
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 多数据源整合的更多相关文章
- spring-boot (四) springboot+mybatis多数据源最简解决方案
学习文章来自:http://www.ityouknow.com/spring-boot.html 配置文件 pom包就不贴了比较简单该依赖的就依赖,主要是数据库这边的配置: mybatis.confi ...
- springboot + mybatis + 多数据源
此文已由作者赵计刚薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验 在实际开发中,我们一个项目可能会用到多个数据库,通常一个数据库对应一个数据源. 代码结构: 简要原理: 1) ...
- 第九章 springboot + mybatis + 多数据源 (AOP实现)
在第八章 springboot + mybatis + 多数据源代码的基础上,做两点修改 1.ShopDao package com.xxx.firstboot.dao; import org.spr ...
- 【第九章】 springboot + mybatis + 多数据源 (AOP实现)
在第八章 springboot + mybatis + 多数据源代码的基础上,做两点修改 1.ShopDao package com.xxx.firstboot.dao; import org.spr ...
- springboot+mybatis多数据源的事务问题
1.springboot+mybatis实现多数据源后,针对单个数据源我们可以使用@Transactional(name="xxxTransactionManager") 来指定使 ...
- springboot mybatis 多数据源配置
首先导入mybatis等包,这里就不多说. 下面是配置多数据源和mybatis,每个数据源对应一套mybatis模板 数据源1: package com.aaaaaaa.config.datasour ...
- 第八章 springboot + mybatis + 多数据源(转载)
本篇博客转发自:http://www.cnblogs.com/java-zhao/p/5413845.html 在实际开发中,我们一个项目可能会用到多个数据库,通常一个数据库对应一个数据源. 代码结构 ...
- 【第八章】 springboot + mybatis + 多数据源
在实际开发中,我们一个项目可能会用到多个数据库,通常一个数据库对应一个数据源. 代码结构: 简要原理: 1)DatabaseType列出所有的数据源的key---key 2)DatabaseConte ...
- 第八章 springboot + mybatis + 多数据源2(解决循环引用)
解决了循环引用 1.application.properties #the first datasource jdbc.names:1,2 jdbc1.driverClassName = com.my ...
- spring boot(七):springboot+mybatis多数据源最简解决方案
说起多数据源,一般都来解决那些问题呢,主从模式或者业务比较复杂需要连接不同的分库来支持业务.我们项目是后者的模式,网上找了很多,大都是根据jpa来做多数据源解决方案,要不就是老的spring多数据源解 ...
随机推荐
- Python递归遍历目录并删除文件中的前N行
1 import os 2 3 # 遍历目录下的所有文件 4 def check_file(file_path): 5 os.chdir(file_path) 6 print(os.path.absp ...
- pip相关知识
正常安装语法 # 安装单个 pip install some-package # 安装指定版本 pip install some-package==版本号 # 查看当前模块版本号 pip instal ...
- 【Azure 应用服务】部署Azure Web App时,是否可以替换hostingstart.html文件呢?
问题描述 当成功创建一个Web App时,通过高级工具(Kudu)可以查看 Web App的根目录(wwwroot)中有一个默认的文件(hostingstart.html).它就是应用服务的默认页面. ...
- java 考试易考识记题目(一)
笔者擅长 C# 语言,4月份要考试,学习 JAVA 是为了考试罢了. 如何在最短时间内学习 JAVA 基础语法和通过考试考核呢~ 学习 JAVA ,要为了应付考试,判断.循环这部分,C.C++.C#. ...
- 二十一: Mysql 锁机制
Mysql 锁机制 事务的 隔离性 由这章讲述的 锁 来实现. 1. 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制.在程序开发中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤 ...
- SSH原理与实践(三)安装和使用
主页 个人微信公众号:密码应用技术实战 个人博客园首页:https://www.cnblogs.com/informatics/ 引言 在之前SSH原理与实践系列文章中,我们主要讲解了SSH协议的原理 ...
- XAF Blazor ListView 布局样式
前言 XAFBlazor虽然可以适应PC端及移动端,但从它的界面可以看出,它明显是移动优先的(Mobile First).这样的界面在PC端有时会感觉不是很方便(特别对于数据密集的系统来说),即将发布 ...
- pip 查看某个包有哪些版本并升级
查看某个包有哪些版本 pip install xxx== 升级包 pip install xxx==1.1
- vscode 自动格式化 好使的配置 setting.json 20210622
一直用idea,今天有个需求得用vscode,发现格式化不好使了 用 vetur 格式化 结果带分行什么的,eslint 过去不了,更新了个好使的配置,记录一下. { "update.mod ...
- 火柴 基于everything的搜索软件 软件推荐 Ctrl+Ctrl 显示 tab转换 本机搜索和网络搜索
https://www.huochaipro.com/