首先需要创建多个数据库

简单的user表

CREATE TABLE `user` (`id` int NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAULT NULL,`age` int DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

导入项目依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>

application.properties


spring.datasource.one.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.one.username=root
spring.datasource.one.password=feng10.10
spring.datasource.one.url=jdbc:mysql://localhost:3306/m_1?characterEncoding=utf8&serverTimezone=UTCspring.datasource.two.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.two.username=root
spring.datasource.two.password=feng10.10
spring.datasource.two.url=jdbc:mysql://localhost:3306/m_2?characterEncoding=utf8&serverTimezone=UTC# 多数据源配置时,mybatis这里设置的配置是不生效的!!
#mybatis.mapper-locations=classpath*:/mapper1/*.xml, classpath*:/mapper2/*.xml
#mybatis.type-aliases-package=com.zlf.mybatisDemo.domain

手动配置数据源

DataSourceConfig.java

import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;/*** 配置多数据源*/
@Configuration
public class DataSourceConfig {//将配置文件中对应的属性注入改数据源中@ConfigurationProperties("spring.datasource.one")@BeanDataSource dsOne(){return DruidDataSourceBuilder.create().build();}//将配置文件中对应的属性注入改数据源中@ConfigurationProperties("spring.datasource.two")@BeanDataSource dsTwo(){return DruidDataSourceBuilder.create().build();}
}

手动配置myBatis配置

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.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import javax.annotation.Resource;
import javax.sql.DataSource;/*** 配置myBaits配置 1* 在@MapperScan注解中指定Mapper接口所在的位直, 同时指定SqlSessionFactory的实例名, 则该位置下的 Mapper将使用 SqlSessionFactory 实例。* 提供 SqlSessionFactory 的实例, 直接创建出来, 同时将 DataSource 的实例设置给 SqlSessionFactory,* 这里创建的 SqlSessionFactory 实例也就是@MapperScan 注解中 sqlSessionFactoryRef参数指定的实例 。*/
@Configuration
@MapperScan(value = "com.zlf.mybatisDemo.mapper1",sqlSessionFactoryRef = "sqlSessionFactoryBean1")
public class MyBatisConfigOne {@Resource(name = "dsOne")DataSource dataSource;/*** 提供 SqlSessionFactory 的实例, 直接创建出来, 同时将 DataSource 的实例设置给 SqlSessionFactory,* 这里创建的 SqlSessionFactory 实例也就是@MapperScan 注解中 sqlSessionFactoryRef参数指定的实例 。* @return* @throws Exception*/@BeanSqlSessionFactory sqlSessionFactoryBean1() throws Exception{SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();factoryBean.setDataSource(dataSource);// 需要手动设置mapper文件的路径factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:/mapper1/*.xml"));return factoryBean.getObject();}/*** 提供一个 SqlSessionTemplate 实例。 这是一个线程安全类,主要用来管理 MyBatis 中的 SqlSession 操作。* @return* @throws Exception*/@BeanSqlSessionTemplate sqlSessionTemplate1() throws Exception{return new SqlSessionTemplate(sqlSessionFactoryBean1());}}
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.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import javax.annotation.Resource;
import javax.sql.DataSource;/*** 配置myBaits配置 2* 在@MapperScan注解中指定Mapper接口所在的位直, 同时指定SqlSessionFactory的实例名, 则该位置下的 Mapper将使用 SqlSessionFactory 实例。* 提供 SqlSessionFactory 的实例, 直接创建出来, 同时将 DataSource 的实例设置给 SqlSessionFactory,* 这里创建的 SqlSessionFactory 实例也就是@MapperScan 注解中 sqlSessionFactoryRef参数指定的实例 。*/
@Configuration
@MapperScan(value = "com.zlf.mybatisDemo.mapper2",sqlSessionFactoryRef = "sqlSessionFactoryBean2")
public class MyBatisConfigTwo {@Resource(name = "dsTwo")DataSource dataSource;/*** 提供 SqlSessionFactory 的实例, 直接创建出来, 同时将 DataSource 的实例设置给 SqlSessionFactory,* 这里创建的 SqlSessionFactory 实例也就是@MapperScan 注解中 sqlSessionFactoryRef参数指定的实例 。* @return* @throws Exception*/@BeanSqlSessionFactory sqlSessionFactoryBean2() throws Exception{SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dataSource);// 需要手动设置mapper文件的路径sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:/mapper2/*.xml"));return sqlSessionFactoryBean.getObject();}/*** 提供一个 SqlSessionTemplate 实例。 这是一个线程安全类,主要用来管理 MyBatis 中的 SqlSession 操作。* @return* @throws Exception*/@BeanSqlSessionTemplate sqlSessionTemplate2() throws Exception {return new SqlSessionTemplate(sqlSessionFactoryBean2());}}

项目结构

启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication//@MapperScan(basePackages = {"com.zlf.mybatisDemo.mapper1","com.zlf.mybatisDemo.mapper2"}) 已经在配置类中设置了
public class MybatisDemoApplication {public static void main(String[] args) {SpringApplication.run(MybatisDemoApplication.class, args);}}

测试结果

测试类

import com.zlf.mybatisDemo.domain.User;
import com.zlf.mybatisDemo.mapper1.userMapper1;
import com.zlf.mybatisDemo.mapper2.userMapper2;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTest
class MybatisDemoApplicationTests {@AutowireduserMapper1 userMapper1;@AutowireduserMapper2 userMapper2;@Testvoid TestMybatis(){List<User> users1 = userMapper1.findAll();List<User> users2 = userMapper2.findAll();System.out.println("第一个数据源:m_1");System.out.println(users1);System.out.println("第二个数据源:m_2");System.out.println(users2);}}

SpringBoot中mybatis配置多数据源相关推荐

  1. 基于springboot和mybatis的多数据源配置

    基于springboot和mybatis的多数据源配置 1.首先新建一个springboot项目,项目结构如下: 引入mybatis和mysql依赖: <dependency><gr ...

  2. springboot 中 mybatis configuration 配置失效问题

    springboot 中 mybatis configuration 配置失效问题 环境 场景 springboot角度分析 SqlSessionFactory 设置Configuration Myb ...

  3. springboot 项目输出 sql 到控制台、 SpringBoot 中 Mybatis 打印 sql

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. SpringBoot中Mybatis打印sql 如果使用的是 application.propert ...

  4. SpringBoot中如何配置使用过滤器(Filter)呢?

    转自: SpringBoot中如何配置使用过滤器(Filter)呢? 下文笔者讲述springboot中配置过滤器的方法分享,如下所示 实现思路:1.定义filter2.将filter注册进sprin ...

  5. springboot中@Configuration配置类加载流程

    springboot中@Configuration配置类加载流程 代码位置 源码解读 每一步的分析 代码位置 ConfigurationClassParser#doProcessConfigurati ...

  6. 32位数据源中没有mysql_[SpringBoot实战]快速配置多数据源(整合MyBatis)

    前言 由于业务需求,需要同时在SpringBoot中配置两套数据源(连接两个数据库),要求能做到service层在调用各数据库表的mapper时能够自动切换数据源,也就是mapper自动访问正确的数据 ...

  7. Springboot环境下mybatis配置多数据源配置

    mybatis多数据源配置(本文示例为两个),方便实现数据库的读写分离,分库分表功能 本文基于springboot2进行的配置,如版本为springboot1系列则需修改yml的配置(在文末附带) m ...

  8. mybatis多数据源配置_随笔:springboot+mybatis 配置双数据源

    山石彦 | 作者 urlify.cn/vQzIne | 来源 最近工作中有用到双数据源,一个项目(中台)中需要操作两个不同的数据库.当时考虑到了两种方式, 1.通过http请求访问(A项目访问d1数据 ...

  9. Mybatis在Spring-boot中自动配置的底层源码分析

    前言:在Spring-boot结合Mybatis,我们只需要配置一些数据库连接的基本信息,写好Mapper和Dto就可以跑起来了.但是它是如何帮我们完成自动配置,并且执行我们的sql语句的呢?我们一起 ...

最新文章

  1. hibernate 多对多(many-to-many)
  2. 口语学习Day6:今天聊聊国内安全还是国外安全?
  3. Python类三种方法,函数传参,类与实例变量
  4. tensorboard 数据降维分布图_以mnist为例探究tensorboard
  5. PyTorch项目使用TensorboardX进行训练可视化
  6. hyperion高光谱参数_收藏!光纤光谱仪在激光领域的典型应用
  7. 在论坛中出现的各种疑难问题:日志收缩问题
  8. scala 字符串函数_Scala中的字符串chomp(或chop)函数
  9. Python异常处理 -跳过异常继续执行
  10. 军用装备产品GJB150A淋雨试验检测机构
  11. 算法大亨Carl的面试简历长啥样?同款模板让你脱胎换骨
  12. P2433 【深基1-2】小学数学 N 合一
  13. 基于SSM的Web网页聊天室系统
  14. 11210怎么等于24_算24点
  15. 跳马问题C++递归调用
  16. yy安全中心官网首页登录html,YY安全中心手机版
  17. 女程序员们的结婚要求
  18. LDA隐狄利克雷分配
  19. 收藏的一些前端酷炫网站
  20. 显示一张桌子的信息,包括桌子的形状(长方形、方形、圆形、椭圆形;使用Rect、Square、Circle、Ellipse)、腿数、高度、桌面面积。定义变量来保存桌子的信息,并显示各个信息的值。要点提示

热门文章

  1. onCreate源码分析
  2. snort的详细配置
  3. Kubernetes Master High Availability 高级实践
  4. java api项目配置统一的错误返回json提示
  5. [CareerCup] 8.10 Implement a Hash Table 实现一个哈希表
  6. switch(封装)
  7. 36岁自学C语言,C语言的数据类型
  8. python setup.py install 出错_python setup.py install 失败
  9. PLSQL Developer导入csv文件到oracle
  10. Zookeeper Watch监听