应用场景

 根据业务我需求,根据不通数据库放入不同的数据,进行项目重构整合,重构到一种数据库中,因为数据库涉及的表多,数据量大,下面,我进行的操作是到处数据库中的表结构。具体演示用配置类配置三种数据库。

项目结构

POM依赖

ps:这里注意一下SQL server的驱动特别要注意jdk的版本,MySQL的驱动我用的是最新的,Oracle驱动maven上下载不上的必须手动去官网下载然后添加到maven的本地仓库。

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.1.4.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.1.41</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.16</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>1.2.3</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.15</version></dependency><dependency><groupId>com.microsoft.sqlserver</groupId><artifactId>mssql-jdbc</artifactId><version>6.1.0.jre8</version></dependency><dependency><groupId>com.oracle</groupId><artifactId>ojdbc14</artifactId><version>10.2.0.1.0</version></dependency></dependencies>

配置文件如下

server.port=8989
#mysql
spring.datasource.mysql.url=jdbc:mysql://localhost:3306/xxx?useUnicode=true&useSSL=true
spring.datasource.mysql.driverclassname=com.mysql.cj.jdbc.Driver
spring.datasource.mysql.password=xxx
spring.datasource.mysql.username=xxxx#sqlserver
spring.datasource.sqlserver.url=jdbc:sqlserver://localhost:1433;DatabaseName=xxxx
spring.datasource.sqlserver.driverclassname=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.sqlserver.username=xxxx
spring.datasource.sqlserver.password=xxxx#oracle
spring.datasource.oracle.driverclassname=oracle.jdbc.driver.OracleDriver
spring.datasource.oracle.url=jdbc:oracle:thin:@localhost:1521:xe
spring.datasource.oracle.username=xxxx
spring.datasource.oracle.password=xxxx

我的DAO层是用mybatis 注解开发。

这都不是重点,重点是单个数据库操作要放到单独的一个包下,不然会报错

重点,看这儿!!!

1. 首先启动类把自动配置数据源关闭

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class TableApplication {public static void main(String[] args) {SpringApplication.run(TableApplication.class, args);}
}

2.配置多种数据源,我用的是alibaba的Druid连接池,创建多种数据源的时候必须要有一个主数据源。用@Primary注解,下面有演示。

  1. MySQL
package com.nec.table.conf;import com.alibaba.druid.pool.DruidDataSource;
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.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.sql.DataSource;@Configuration
@MapperScan(basePackages = "com.nec.table.dao.mysql", sqlSessionFactoryRef = "mysqlSqlSessionFactory")
@PropertySource({"classpath:application.properties"})
public class MysqlSqlSessionFactoryConfig {//从配置文件中获取值@Value("${spring.datasource.mysql.url}")private String mysqlurl;@Value("${spring.datasource.mysql.type}")private String mysqldriverClassName;@Value("${spring.datasource.mysql.username}")private String mysqlusername;@Value("${spring.datasource.mysql.password}")private String mysqlpassword;//创建数据源@Bean(name = "mysqlDataSource")public DataSource mysqlDataSource() {DruidDataSource druidDataSource = new DruidDataSource();druidDataSource.setDriverClassName(mysqldriverClassName);druidDataSource.setUrl(mysqlurl);druidDataSource.setUsername(mysqlusername);druidDataSource.setPassword(mysqlpassword);return druidDataSource;}//事务管理@Bean("mysqlTransactionManager")public DataSourceTransactionManager mysqlTransactionManager() {DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(mysqlDataSource());return dataSourceTransactionManager;}@Bean(name = "mysqlSqlSessionFactory")public SqlSessionFactory sqlSessionFactory1(@Qualifier("mysqlDataSource") DataSource dataSource) throws Exception {SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();factoryBean.setDataSource(dataSource);return factoryBean.getObject();}}

2.SQL server 是主数据源,看操作!!

package com.nec.table.conf;import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.PropertySource;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.sql.DataSource;@Configuration
@MapperScan(basePackages = "com.nec.table.dao.sqlserver", sqlSessionFactoryRef = "sqlserverSqlSessionFactory")
@PropertySource({"classpath:application.properties"})
public class SqlServerSqlSessionFactoryConfig {@Value("${spring.datasource.sqlserver.url}")private String sqlserverurl;@Value("${spring.datasource.sqlserver.type}")private String sqlserverdriverClassName;@Value("${spring.datasource.sqlserver.username}")private String sqlserverusername;@Value("${spring.datasource.sqlserver.password}")private String sqlserverpassword;@Bean(name = "sqlserverDataSource")@Primarypublic DataSource sqlserverDataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setUsername(sqlserverusername);dataSource.setPassword(sqlserverpassword);dataSource.setUrl(sqlserverurl);dataSource.setDriverClassName(sqlserverdriverClassName);return dataSource;}@Bean("sqlServerTractional")@Primarypublic DataSourceTransactionManager sqlServerTractional() {DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(sqlserverDataSource());return transactionManager;}@Bean(name = "sqlserverSqlSessionFactory")@Primarypublic SqlSessionFactory sqlSessionFactory3(@Qualifier("sqlserverDataSource") DataSource dataSource) throws Exception {SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();factoryBean.setDataSource(dataSource);return factoryBean.getObject();}}

3.Oracle

package com.nec.table.conf;import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.sql.DataSource;@Configuration
@MapperScan(basePackages = "com.nec.table.dao.oracle", sqlSessionFactoryRef = "oracleSqlSessionFactory")
public class OracleSqlSessionFactoryConfig {@Value("${spring.datasource.oracle.url}")private String oracleurl;@Value("${spring.datasource.oracle.type}")private String oracledriverClassName;@Value("${spring.datasource.oracle.username}")private String oracleusername;@Value("${spring.datasource.oracle.password}")private String oraclepassword;@Bean(name = "oracleDataSource")public DataSource oracleDataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName(oracledriverClassName);dataSource.setUrl(oracleurl);dataSource.setUsername(oracleusername);dataSource.setPassword(oraclepassword);return dataSource;}@Bean("oracleTransactionManager")public DataSourceTransactionManager oracleTransactionManager() {DataSourceTransactionManager manager = new DataSourceTransactionManager(oracleDataSource());return manager;}@Bean(name = "oracleSqlSessionFactory")public SqlSessionFactory sqlSessionFactory2(@Qualifier("oracleDataSource") DataSource dataSource) throws Exception {SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();factoryBean.setDataSource(dataSource);return factoryBean.getObject();}}

基本操作就已经完成,配置这个东西网上有很多,但是适合自己实际业务的很少。如果你的需求刚好和我一样。

联系邮箱 fenhua_zhang@163.com

Spring boot+Mybatis连接多种数据库oracle,mysql,sqlserver相关推荐

  1. Spring Boot MyBatis配置多种数据库

    mybatis-config.xml是支持配置多种数据库的,本文将介绍在Spring Boot中使用配置类来配置. 1. 配置application.yml # mybatis配置 mybatis:c ...

  2. Spring Boot+Mybatis:实现数据库登录注册与两种properties配置参数读取

    〇.参考资料 1.hutool介绍 https://blog.csdn.net/abst122/article/details/124091375 2.Spring Boot+Mybatis实现登录注 ...

  3. 商城项目(一)使用Spring boot + Mybatis搭建

    Spring boot + Mybatis基础架构 环境搭建 mysql 8 mysql客户端连接工具 Valentina Studio springboot 版本:2.1.3.RELEASE Myb ...

  4. spring boot+Mybatis+mysql+atomikos+jta实现多数据源分布式事务

    spring boot+Mybatis+mysql+atomikos+jta实现多数据源分布式事务 1.导入相关依赖 2.配置相关application.properties 3.创建配置文件 4.创 ...

  5. JavaEE + Oracle + Spring Boot + Mybatis + Maven 开发简易版银行管理系统(附源码)

    文章目录 JavaEE + Oracle + Spring Boot + Mybatis + Maven 开发简易版银行管理系统 一.系统介绍 二.开发步骤 三.系统展示 四.开发总结 五.数据库相关 ...

  6. SpringBoot实战系列1:Spring Boot+Mybatis+MySql实现增删改查

    前言 Spring boot项目目前是Java Web开发领域最受市场欢迎的Spring框架之一,也是构建分布式项目.微服务项目重要基础之一,Spring Boot免去了配置繁杂的依赖和配置,使得开发 ...

  7. Eclipse + Spring boot +mybatis + mysql

    Eclipse + Spring boot +mybatis + mysql 如题.使用Springboot 2.0 版本进行网页的开发.原理和优点很多博文已经讲过了,这里不再赘述.但是很多项目按照他 ...

  8. mysql快速启动_GitHub - TianSiQiang/Spring-Boot-MyBatis-Mysql: Spring Boot+MyBatis+Mysql 快速启动示例...

    Spring Boot+MyBatis+Mysql 添加依赖 引入 lombok.mysql-connector-java .mybatis-plus-boot-starter 依赖: org.pro ...

  9. spring boot+kafka+canal实现监听MySQL数据库

    spring boot+kafka+canal实现监听MySQL数据库 一.zookeeper安装 kafka依赖于zookeeper,安装kafka前先安装zookeeper 下载地址:Apache ...

  10. spring boot + mybatis + layui + shiro后台权限管理系统

    后台管理系统 版本更新 后续版本更新内容 链接入口: springboot + shiro之登录人数限制.登录判断重定向.session时间设置:https://blog.51cto.com/wyai ...

最新文章

  1. mysql邮箱配置文件_SQL-数据库邮箱配置
  2. java的total_Java LabelResourcePool.totalNum方法代码示例
  3. Xshell连接服务器桌面调用服务器的图形==Xmanager的===Xbrowser===XDMCP远程桌面===调用virt-mannager管理工具;、Xshell用普通用户调用图形
  4. 第五周实践项目8 8皇后问题的回溯求解_栈结构
  5. linux下安装mysql57_Linux——CentOS7之mysql5.7安装与配置
  6. 2016-04-29 二分查找的面试题
  7. axure实现复选框全选_AxureRP8实战手册-案例73(全选与取消全选效果)
  8. java 静态绑定_java的动态绑定和静态绑定
  9. 【转】B树的插入和删除
  10. oracle rac 清理log,Oacle rac架构监听日志清理
  11. python string转date类型_java string类型怎么转化成date类型
  12. PGM:贝叶斯网的参数估计2
  13. 使用SoftEther 上免费校园网(ipv6)
  14. ant design——Modal
  15. 11月程序员全国程序员平均工资
  16. 基于docker的wekan部署
  17. Linux文件内容关键字查询
  18. U盘格式化导致存储空间变小的解决方法汇总
  19. 公众号网课搜题系统-掘光者题库
  20. 麒麟V10SP1的国产化Qt适配

热门文章

  1. 生成器和生成器表达方式
  2. 34604-52-9,Ms-PEG3-Ms甲磺酸基是良好的离去基,也可用作伯醇的保护基
  3. Local time zone must be set-see zic manual page
  4. JS基础到结束知识详细大汇总
  5. Java集合——数据结构
  6. 1153. 字符串排序
  7. 初探springboot的荆棘之路
  8. svchost.exe 大量占用的问题
  9. 固态硬盘是什么接口_小白指南:固态硬盘接口傻傻分不清,新手用户应该如何选?...
  10. 2022-03-25 redis哨兵处理failover