SpringBoot 配置多数据源(Sql Server、MySql)
创建SpringBoot项目就不说了。(直接使用IDEA创建就好了)
整个目录结构如图:(不用管图中报错,项目是在另一台电脑上写的。报错是没有jar包,因为网络比较慢。)
1、主要pom.xml
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Spring Boot Test 依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- Spring Boot Mybatis 依赖 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.2.0</version></dependency> <!-- MySQL 连接驱动依赖 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql-connector}</version></dependency> <!-- Druid 数据连接池依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.18</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><dependency><groupId>com.microsoft.sqlserver</groupId><artifactId>mssql-jdbc</artifactId><version>7.0.0.jre8</version></dependency></dependencies>
2、在配置文件中配置多数据源application.properties
## 默认的数据源
master.datasource.url=jdbc:mysql://localhost:3306/springbootdb?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
master.datasource.username=root
master.datasource.password=admin
master.datasource.driverClassName=com.mysql.jdbc.Driver
## 另一个的数据源
cluster.datasource.url=jdbc:sqlserver://localhost:1433;DatabaseName=tablename
cluster.datasource.username=sa
cluster.datasource.password=admin
cluster.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
我这配置SqlServer、MySql,如果需要连接MySql中的两个数据库。请自行更更改配置,并删除pom依赖。
3、配置mapper接口的数据源
MasterDataSourceConfig.java
package com.wzq.datasource2.config;import javax.sql.DataSource;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.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;@Configuration
//扫描 Mapper 接口并容器管理
@MapperScan(basePackages = {"com.wzq.datasource2.mapper.master"}, sqlSessionFactoryRef = "masterSqlSessionFactory")
public class MasterDataSourceConfig {// 精确到 master 目录,以便跟其他数据源隔离static final String PACKAGE = "com.wzq.datasource2.mapper.master";static final String MAPPER_LOCATION = "classpath:mapper/master/*.xml";@Value("${master.datasource.url}")private String url;@Value("${master.datasource.username}")private String user;@Value("${master.datasource.password}")private String password;@Value("${master.datasource.driverClassName}")private String driverClass;@Primary@Bean(name = "masterDataSource")public DataSource masterDataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName(driverClass);dataSource.setUrl(url);dataSource.setUsername(user);dataSource.setPassword(password);return dataSource;}@Bean(name = "masterTransactionManager")@Primarypublic DataSourceTransactionManager masterTransactionManager() {return new DataSourceTransactionManager(masterDataSource());}@Bean(name = "masterSqlSessionFactory")@Primarypublic SqlSessionFactory masterSqlSessionFactory(@Qualifier("masterDataSource") DataSource masterDataSource)throws Exception {final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();sessionFactory.setDataSource(masterDataSource);sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/master/*.xml"));return sessionFactory.getObject();}
}
4、创建entity实体类
public class StuT {private static final long serialVersionUID = 1L;private Integer id;private String name;//get/set}public class Stu {private static final long serialVersionUID = 1L;private Integer id;private String name;//get/set
}
ClusterDataSourceConfig.java
package com.wzq.datasource2.config;import javax.sql.DataSource;
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.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;import com.alibaba.druid.pool.DruidDataSource;@Configuration
//扫描 Mapper 接口并容器管理
@MapperScan(basePackages = {"com.wzq.datasource2.mapper.cluster"}, sqlSessionFactoryRef = "clusterSqlSessionFactory")
public class ClusterDataSourceConfig {// 精确到 cluster 目录,以便跟其他数据源隔离static final String PACKAGE = "com.wzq.datasource2.mapper.cluster";static final String MAPPER_LOCATION = "classpath:mapper/cluster/*.xml";@Value("${cluster.datasource.url}")private String url;@Value("${cluster.datasource.username}")private String user;@Value("${cluster.datasource.password}")private String password;@Value("${cluster.datasource.driverClassName}")private String driverClass;@Bean(name = "clusterDataSource")public DataSource clusterDataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName(driverClass);dataSource.setUrl(url);dataSource.setUsername(user);dataSource.setPassword(password);return dataSource;}@Bean(name = "clusterTransactionManager")public DataSourceTransactionManager clusterTransactionManager() {return new DataSourceTransactionManager(clusterDataSource());}@Bean(name = "clusterSqlSessionFactory")public SqlSessionFactory clusterSqlSessionFactory(@Qualifier("clusterDataSource") DataSource clusterDataSource)throws Exception {final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();sessionFactory.setDataSource(clusterDataSource);sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/cluster/*.xml"));return sessionFactory.getObject();}
}
请根据实体类自行创建表
5、编写mapper层
6、Service省略,目录结构如下:
7、controller层
package com.wzq.datasource2.controller;import com.wzq.datasource2.entity.cluster.StuT;
import com.wzq.datasource2.entity.master.Stu;
import com.wzq.datasource2.service.cluster.StuTService;
import com.wzq.datasource2.service.master.StuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.List;@Controller
public class StuController {@Autowired@Qualifier(value = "stuServiceImpl")private StuService stuService;@Autowired@Qualifier(value = "stuTServiceImpl")private StuTService stuTService;@RequestMapping("/list")@ResponseBodypublic List<Stu> getAllStu(){return stuService.getAllStu();}@RequestMapping("/list2")@ResponseBodypublic List<StuT> getAllStuT(){return stuTService.getAllStuT();}}
总结:
1、配置多数据的目的是因为新项目需要用到老项目中的数据,而数据存放在两个不同的数据库当中,配置多数据源能很好的解决这一方面。还有一些公司进行了分库的操作,就比如一个制作增删改,一个制作查询。
2、 可能是我在配置数据源的时候使用了master或cluster,亦或者在配置mapper接口的数据源时指定的mastter或cluster,所以需要在mapperwen文件下创建master和cluster文件,以此来区分数据源的使用。
PS:报红是因为没有jar包!报红是因为没有jar包!报红是因为没有jar包!
GitHub网址:https://github.com/qz596766829/WzqRepository.git (datasoutrce2项目)
SpringBoot 配置多数据源(Sql Server、MySql)相关推荐
- SpringBoot配置多数据源Mybatis/MybatisPlus/mysql
一.前言 项目开发过程中,单一数据源不能满足开发需求或者需要用到主从数据库的时候,引入多数据源配置在项目中显得尤为必要.下面简单介绍一种在spingboot中结合mybatis针对同类型的数据源mys ...
- SpringBoot 配置多数据源
项目Git地址:SpringBoot 配置多数据源:Jacob-multi-data-source 准备工作 准备两个数据库(此模块中两个数据库一个为本地 一个为远程,本地为主,远程为从).然后建表. ...
- SpringBoot 整合Druid数据源SQL监控不显示问题
SpringBoot 整合Druid数据源SQL监控不显示问题 项目场景: 问题描述: 解决方案: 项目场景: SpringBoot 整合Druid数据源SQL监控不显示 问题描述: 明明使用Drui ...
- 关于Springboot 配置多数据源 Druid 德鲁伊
关于Springboot 配置多数据源 Druid 德鲁伊 yml config yml server:port: 8080servlet:encoding:charset: UTF-8 spring ...
- springboot配置Druid数据源
springboot配置druid数据源 Author:SimpleWu springboot整合篇 前言 对于数据访问层,无论是Sql还是NoSql,SpringBoot默认采用整合SpringDa ...
- 数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接
日常开发中少不了各种可视化数据库管理工具.如果需要同时能连接多种数据库,大家肯定都会想到 DBeaver.Navicat Premium.本文介绍另一个十分好用且强大的工具:DataGrip. Dat ...
- transact-sql_如何使用Transact-SQL创建,配置和删除SQL Server链接服务器
transact-sql Linked servers allow getting data from a different SQL Server instance using single T-S ...
- Qlikview配置ODBC连接SQL SERVER/ORACLE
一, Qlikview配置ODBC连接SQL SERVER 1,打开ODBC数据源管理器:运行--〉ODBC 2,添加用户DSN 3,选择SQL Server Native Client 11.0, ...
- python数据库管理软件_数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接 - Python社区...
DataGrip :Jet Brains出品的一款数据库管理工具(没错,是Jet Brains出品,必属精品).DataGrip整合集成了当前主流数据库(如:SQL Server, MySQL, Or ...
最新文章
- 一次生产 CPU 100% 排查优化实践
- 第三方登录过程—OAuth2.0协议
- 拦截器和过滤器之间有很多相同之处,但是两者之间存在根本的差别
- 如何申请一份iOS工作
- 11、1.4.3 测试JDK安装成功
- ASP.NET MVC 3发布报错(ASP.NET MVC 3在没有安装环境的服务器上运行)的解决方案
- wegame饥荒一直连接中_英雄联盟手游:腾讯WeGame发布了,可以玩云顶之弈自走棋...
- OC语言-04-OC语言-核心语法
- 算法笔记_面试题_8.零钱兑换
- 微导管行业调研报告 - 市场现状分析与发展前景预测
- 5v继电器模块实物接线_一秒看懂基础继电器电路图解
- Anomalies,Factors,andMultiFactorModels
- L TEXT和 _T的区别
- CTF-Crypto 密码原理及解密方法
- 卷积神经网络的训练过程
- PyQt——1. 简单认识PyQt及Python3.7安装QtDesigner
- TR-069协议简介
- 群、环、域基础与例子
- FPGA实现CortexM3内核
- 汽车电商纷纷折戟,新零售能唱好这出戏吗?
热门文章
- java消息顺序执行_Apache Flink:如何并行执行但保持消息顺序?
- 如何在跑cts的时候生成log_为什么要买奥铃CTS?听听用户的评价
- b树与b+树的区别_一文详解 B-树,B+树,B*树
- 将给定数据源生成静态HTML页面持久化到项目之外的硬盘
- PreparedStatement预编译的sql执行对象
- c++—简单的密码本实现
- (五)Redis在项目中应用
- USACO SEC.1.3 No.1 Mixing Milk
- Java自定义JSlider UI
- 什么是SNAT、DNAT?