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的教程,都是一些比 ...
随机推荐
- 微信浏览器打开H5页面右上角隐藏转发功能
js设置转发开关 document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { WeixinJSBridge. ...
- 几种Windows进程通信
32位Windows采用虚拟内存技术使每个进程虚拟4G内存,在逻辑上实现了对进程之间数据代码的分离与保护.那么相应的进程之间的通信也就有必要整理掌握一下. Windows进程间通讯的方法有很多:管道. ...
- Nacos——注册中心
目录 1.什么是nacos 2.使用--依赖+配置文件 3.Nacos服务分级存储模型 4.服务跨集群调用问题 5.服务集群属性--配置服务集群 6. Nacos-NacosRule负载均衡 7.根据 ...
- ftp:500 Illegal PORT command. 425
局域网用FTP命令访问外网的FTP SERVER,执行任何命令(如dir,ls,put,get)总是报下面的错误ftp:500 Illegal PORT command. 425ftp:Use POR ...
- C++实现反射---RTTR库的使用
使用过C#或者Java 的童鞋,应该对这些语言提供的反射机制有所了解.所谓反射,在我看来就是在只知道一个类的名字(字符串形式)的情况下,自动创建出具体的类实例,并且能够枚举该类型拥有的属性.方法等信息 ...
- JS验证身份证是否符合规则
调用isIdCardNo(num) 验证通过返回true 错误返回false function isIdCardNo(num) { var factorArr = new Array(7, 9, 1 ...
- JAVA获取多个经纬度的中心点
import java.util.LinkedList; public class Test1 { /** * 位置实体类,根据自己的来即可 */ static class Position{ /** ...
- JS获取当前页面的网址链接
JavaScript获取当前页面的URL .链接地址 var currUrl = decodeURIComponent(location.href.split('#')[0]); java获取方式:h ...
- C++使用C语言库函数创建文件夹
概述 本文演示环境: win10 + vs2017 头文件 #include <io.h> #include <direct.h> 函数 下面的函数,从左至右依次检查文件夹是否 ...
- 【转】最小生成树——Kruskal算法
[转]最小生成树--Kruskal算法 标签(空格分隔): 算法 本文是转载,原文在最小生成树-Prim算法和Kruskal算法,因为复试的时候只用到Kruskal算法即可,故这里不再涉及Prim算法 ...