Springboot整合Mybatis,连接多个数据库(Mysql+Oracle)
maven依赖,需要注意的是mysql使用的版本
1 <dependencies>
2 <dependency>
3 <groupId>com.oracle.database.jdbc</groupId>
4 <artifactId>ojdbc8</artifactId>
5 <scope>runtime</scope>
6 </dependency>
7 <dependency>
8 <groupId>mysql</groupId>
9 <artifactId>mysql-connector-java</artifactId>
10 <version>5.1.30</version>
11 </dependency>
12 <!--Druid依赖代码 收藏代码-->
13 <dependency>
14 <groupId>com.alibaba</groupId>
15 <artifactId>druid</artifactId>
16 <version>0.2.15</version>
17 </dependency>
18 </dependencies>
application.properties配置文件
1 #Spring boot视图配置
2 spring.mvc.view.prefix=/WEB-INF/view/
3 spring.mvc.view.suffix=.jsp
4 #静态文件访问配置
5 spring.mvc.static-path-pattern=/static/**
6
7 #加载Mybatis的xml 在:resources下
8 mybatis.mapper-locations=classpath:/com/spring/login/mapper/mysql/*.xml
9
10 #设置运行的端口
11 server.port=8080
12
13 #配置字符编码
14 server.servlet.encoding.enabled=true
15 server.servlet.encoding.force=true
16 server.servlet.encoding.charset=UTF-8
17
18 server.tomcat.uri-encoding=UTF-8
19
20 #取消thymeleaf 严格检查
21 spring.thymeleaf.mode=LEGACYHTML5
22
23 #连接Oracle数据库
24 oracle.datasource.driver-class-name= oracle.jdbc.driver.OracleDriver
25 oracle.datasource.url= jdbc:oracle:thin:@你的地址:1521/orcl
26 oracle.datasource.username=账号
27 oracle.datasource.password=密码
28
29 #配置连接mySql数据库
30 spring.datasource.url=jdbc:mysql://你的地址:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf-8
31 spring.datasource.username=账号
32 spring.datasource.password=密码
33 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
看一下目录结构,既,不同的数据库我放在了DAO里不同的包里了,主要是为了区分

在config里新建了两个config类,分别是配置mysql以及oracle数据源使用的,需要注意的是,两个或者多个数据源时,一定要制定一个(只有一个)为主数据源,下面时两个数据源代码
1 package com.spring.login.config;
2
3 import com.alibaba.druid.pool.DruidDataSource;
4 import org.apache.ibatis.session.SqlSessionFactory;
5 import org.mybatis.spring.SqlSessionFactoryBean;
6 import org.mybatis.spring.SqlSessionTemplate;
7 import org.mybatis.spring.annotation.MapperScan;
8 import org.springframework.beans.factory.annotation.Qualifier;
9 import org.springframework.beans.factory.annotation.Value;
10 import org.springframework.context.annotation.Bean;
11 import org.springframework.context.annotation.Configuration;
12 import org.springframework.context.annotation.Primary;
13 import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
14 import org.springframework.jdbc.datasource.DataSourceTransactionManager;
15
16 import javax.sql.DataSource;
17
18 @SuppressWarnings("all")
19 @Configuration
20 @MapperScan(basePackages = "com.spring.login.dao.mysql", sqlSessionTemplateRef = "mysqlSqlSessionTemplate")
21 public class MysqlDataSourceConfig {
22 @Value("${spring.datasource.url}")
23 private String url;
24 @Value("${spring.datasource.username}")
25 private String user;
26 @Value("${spring.datasource.password}")
27 private String password;
28 @Value("${spring.datasource.driver-class-name}")
29 private String driverClass;
30
31 @Bean(name = "mysqlDataSource")
32 @Primary
33 public DataSource mysqlDataSource() {
34 DruidDataSource dataSource = new DruidDataSource();
35 dataSource.setUrl(url);
36 dataSource.setUsername(user);
37 dataSource.setPassword(password);
38 dataSource.setDriverClassName(driverClass);
39 return (DataSource) dataSource;
40 }
41
42 @Bean(name = "mysqlTransactionManager")
43 @Primary
44 public DataSourceTransactionManager mysqlTransactionManager(@Qualifier("mysqlDataSource") DataSource dataSource) {
45 return new DataSourceTransactionManager(dataSource);
46 }
47
48 @Bean(name = "mysqlSqlSessionFactory")
49 @Primary
50 public SqlSessionFactory mysqlSqlSessionFactory(@Qualifier("mysqlDataSource") DataSource dataSource) throws Exception {
51 final SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
52 bean.setDataSource(dataSource);
53 bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:/com/spring/login/mapper/mysql/*.xml"));
54 org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
55 configuration.setMapUnderscoreToCamelCase(true);
56 configuration.setCallSettersOnNulls(true);
57 configuration.setLogImpl(org.apache.ibatis.logging.stdout.StdOutImpl.class);
58 bean.setConfiguration(configuration);
59 return bean.getObject();
60 }
61
62 @Bean(name = "mysqlSqlSessionTemplate")
63 @Primary
64 public SqlSessionTemplate mysqlSqlSessionTemplate(@Qualifier("mysqlSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
65 return new SqlSessionTemplate(sqlSessionFactory);
66 }
67 }
oracle连接数据源
1 package com.spring.login.config;
2
3 import com.alibaba.druid.pool.DruidDataSource;
4 import org.apache.ibatis.session.SqlSessionFactory;
5 import org.mybatis.spring.SqlSessionFactoryBean;
6 import org.mybatis.spring.SqlSessionTemplate;
7 import org.mybatis.spring.annotation.MapperScan;
8 import org.springframework.beans.factory.annotation.Qualifier;
9 import org.springframework.beans.factory.annotation.Value;
10 import org.springframework.context.annotation.Bean;
11 import org.springframework.context.annotation.Configuration;
12 import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
13 import org.springframework.jdbc.datasource.DataSourceTransactionManager;
14
15 import javax.sql.DataSource;
16
17 @SuppressWarnings("all")
18 @Configuration
19 @MapperScan(basePackages = "com.spring.login.dao.oracle", sqlSessionTemplateRef = "oracleSqlSessionTemplate")
20 public class OracleDataSourceConfig {
21 @Value("${oracle.datasource.url}")
22 private String url;
23
24 @Value("${oracle.datasource.username}")
25 private String user;
26
27 @Value("${oracle.datasource.password}")
28 private String password;
29
30 @Value("${oracle.datasource.driver-class-name}")
31 private String driverClass;
32
33 @Bean(name = "oracleDataSource")
34 public DataSource oracleDataSource() {
35 DruidDataSource dataSource = new DruidDataSource();
36 dataSource.setDriverClassName(driverClass);
37 dataSource.setUrl(url);
38 dataSource.setUsername(user);
39 dataSource.setPassword(password);
40 return dataSource;
41 }
42
43 @Bean(name = "oracleTransactionManager")
44 public DataSourceTransactionManager oracleTransactionManager() {
45 return new DataSourceTransactionManager(oracleDataSource());
46 }
47
48 @Bean(name = "oracleSqlSessionFactory")
49 public SqlSessionFactory oracleSqlSessionFactory(@Qualifier("oracleDataSource") DataSource oracleDataSource) throws Exception {
50 final SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
51 bean.setDataSource(oracleDataSource);
52 bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:com.spring.login.mapper.oracle/*.xml"));
53 org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
54 configuration.setMapUnderscoreToCamelCase(true);
55 configuration.setCallSettersOnNulls(true);
56 configuration.setLogImpl(org.apache.ibatis.logging.stdout.StdOutImpl.class);
57 bean.setConfiguration(configuration);
58 return bean.getObject();
59 }
60
61 @Bean(name = "oracleSqlSessionTemplate")
62 public SqlSessionTemplate oracleSqlSessionTemplate(@Qualifier("oracleSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
63 return new SqlSessionTemplate(sqlSessionFactory);
64 }
65 }
其他的调用和单数据源一致我这里就不多讲了,后面在启动类上加载注入需要的文件
1 package com.spring;
2
3 import org.mybatis.spring.annotation.MapperScan;
4 import org.springframework.boot.SpringApplication;
5 import org.springframework.boot.autoconfigure.SpringBootApplication;
6 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
7 import org.springframework.stereotype.Controller;
8 import org.springframework.web.bind.annotation.RequestMapping;
9
10 /**
11 * 表示取消数据源的自动配置
12 */
13 @Controller
14 @RequestMapping("/")
15 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class},scanBasePackages = {"com.*"})
16 @MapperScan({"com.spring.login.mapper.mysql"})
17 public class WebApplication {
18
19 public static void main(String[] args) {
20 SpringApplication.run(WebApplication.class, args);
21 System.out.println("项目启动成功!");
22 }
23
24 }
数据库查询信息

Mybatis查询结果

Springboot整合Mybatis,连接多个数据库(Mysql+Oracle)的更多相关文章
- springboot整合mybatis连接mysql数据库出现SQLException异常
在springboot整合mybatis连接数据库的时候,项目中遇到一个SQLException,我检查了properties配置文件,看数据源有没有配错,检查有没有打错字,在数据库中把sql语句查询 ...
- springboot整合mybatis连接oracle
pom.xml: <!-- 链接:https://pan.baidu.com/s/1agHs5vWeXf90r3OEeVGniw 提取码:wsgm --> <dependency&g ...
- SpringBoot 整合 Mybatis + Mysql——XML配置方式
一.介绍 SpringBoot有两种方法与数据库建立连接,一种是集成Mybatis,另一种用JdbcTemplate,本文主要讨论集成Mybatis方式. SpringBoot整合Mybatis也有两 ...
- SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例
1.前言 本文主要介绍使用SpringBoot与shiro实现基于数据库的细粒度动态权限管理系统实例. 使用技术:SpringBoot.mybatis.shiro.thymeleaf.pagehelp ...
- SpringBoot整合MyBatis,HiKari、Druid连接池的使用
SpringBoot整合MyBatis 1.创建项目时勾选mybatis.数据库驱动. mysql驱动默认是8.x的版本,如果要使用5.x的版本,创建后到pom.xml中改. 也可以手动添加依赖 ...
- Canal 实战 | 第一篇:SpringBoot 整合 Canal + RabbitMQ 实现监听 MySQL 数据库同步更新 Redis 缓存
一. Canal 简介 canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同 ...
- SpringBoot整合Mybatis之项目结构、数据源
已经有好些日子没有总结了,不是变懒了,而是我一直在奋力学习springboot的路上,现在也算是完成了第一阶段的学习,今天给各位总结总结. 之前在网上找过不少关于springboot的教程,都是一些比 ...
- springboot学习随笔(四):Springboot整合mybatis(含generator自动生成代码)
这章我们将通过springboot整合mybatis来操作数据库 以下内容分为两部分,一部分主要介绍generator自动生成代码,生成model.dao层接口.dao接口对应的sql配置文件 第一部 ...
- SpringBoot系列七:SpringBoot 整合 MyBatis(配置 druid 数据源、配置 MyBatis、事务控制、druid 监控)
1.概念:SpringBoot 整合 MyBatis 2.背景 SpringBoot 得到最终效果是一个简化到极致的 WEB 开发,但是只要牵扯到 WEB 开发,就绝对不可能缺少数据层操作,所有的开发 ...
- SpringBoot整合Mybatis之进门篇
已经有好些日子没有总结了,不是变懒了,而是我一直在奋力学习springboot的路上,现在也算是完成了第一阶段的学习,今天给各位总结总结. 之前在网上找过不少关于springboot的教程,都是一些比 ...
随机推荐
- Java中的变量,数据类型和运算符
变量,数据类型和运算符 1.变量是一个数据存储空间的表示,它是储存数据的基本单元. 如何理解这句话,下面用一个表格可以形象的表达: 变量与房间之间的对应关系 房间名称 变量名 房间类型 变量类型 入住 ...
- Sentry 监控 - 私有 Docker Compose 部署与故障排除详解
内容整理自官方开发文档 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Map ...
- shell脚本 双向登陆免密
一.简介 源码地址 日期:2018/4/23 介绍:用于hadoop的双向免密脚本,让填写机器互相之间免密登陆 效果图: 暂无 二.使用 适用:centos6+ 语言:中文 注意:执行前需要填写脚本里 ...
- 第四届“传智杯”全国大学生IT技能大赛题解
目录 A B C D E F G 今年题目难度普遍偏低.只有 D,F 还好. A 按题目给的公式计算即可.注意应在最后的答案中去掉小数部分. B 按照题意模拟即可.注意答案要与 \(0\) 取 \(\ ...
- 巧用符号链接迁移 HDFS 数据,业务完全无感知!
问题 JuiceFS 是一个基于对象存储的分布式文件系统,在之前跟对象存储比较的文章中已经介绍了 JuiceFS 能够保证数据的强一致性和极高的读写性能,因此完全可以用来替代 HDFS.但是数据平台整 ...
- LuoguP4420 [COCI2017-2018#1] Tetris 题解
Content 有一个 \(n\times m\) 的拼图,摆上了几块俄罗斯方块图形.已知这些图形可能包含以下这五种(可以旋转),求出下列类型的俄罗斯方块图形数量. 数据范围:\(1\leqslant ...
- SDP 格式解析
一.SDP协议介绍 SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议,包括会话通知协议(SAP).会话初始协议(SIP).实时流协议(RTSP).MIME 扩展协 ...
- SpringBoot整合redis实现过期key监听事件
Spring整合redis实现key过期事件监听:https://www.cnblogs.com/pxblog/p/13969375.html 可以用于简单的过期订单取消支付.7天自动收货场景中 1. ...
- 【LeetCode】242. Valid Anagram 解题报告(Java & Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 字典统计词频 排序 日期 [LeetCode] 题目地址:ht ...
- 【LeetCode】210. Course Schedule II 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 拓扑排序,BFS 拓扑排序,DFS 参考资料 日期 ...