Spring boot +Mybatis多数据源的配置与使用

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Spring boot +Mybatis多数据源的配置与使用

一、添加依赖

首先编辑pom.xml文件,添加相关依赖


<!-- MyBatis依赖 -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.1</version>
</dependency>

<!-- 数据库驱动依赖 -->
<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <scope>runtime</scope>
</dependency>

<!-- 数据库连接池 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</dependency>

二、配置数据库连接

在application.properties中添加数据库相关配置
代码如下(示例):

# datasource1
spring.datasource.d1.url=jdbc:mysql://localhost:3306/tl_nandamen?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.d1.username=root
spring.datasource.d1.password=tl_mysql
spring.datasource.d1.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.d1.type=com.alibaba.druid.pool.DruidDataSource

#datasource2
spring.datasource.d2.url=jdbc:mysql://localhost:3306/tl-alipay?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.d2.username=root
spring.datasource.d2.password=tl_mysql
spring.datasource.exp.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.d2.type=com.alibaba.druid.pool.DruidDataSource

三、配置数据源

1.创建 DataSourceConfig 配置数据源,根据 application.properties 中的配置生成两个数据源:
代码如下(示例):

@Configuration
public class DataSourceConfig {
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.d1")
    DataSource dsDvw(){
        return DruidDataSourceBuilder.create().build();
    }
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.d2")
    DataSource dsExp(){
        return DruidDataSourceBuilder.create().build();
    }
}

代码说明:
•@ConfigurationProperties 注解表示使用不同前缀的配置文件来创建不同的 DataSource 实例。

2.配置 MyBatis,主要是提供 SqlSessionFactory 实例和 SqlSessionTemplate 实例。下面是第一个数据库的配置类:

@Configuration
@MapperScan(value = "com.demo.Mybatis.mapper.mapper2",sqlSessionFactoryRef = "sqlSessionFactoryDvw")
//在 @MapperScan 注解中指定 Mapper 接口所在的位置,同时指定 SqlSessionFactory 的实例名,则该位置下的 Mapper 将使用 SqlSessionFactory 实例
public class DvwDataSourceConfig {
    @Autowired
    @Qualifier("dsDvw")
    DataSource dsDvw;

    @Bean
    SqlSessionFactory sqlSessionFactoryDvw() throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dsDvw);
        return factoryBean.getObject();
    }

    //提供一个 SqlSessionTemplate 实例。这是一个线程安全类,主要用来管理 MyBatis 中的 SqlSession 操作
    @Bean
    SqlSessionTemplate sqlSessionTemplate1() throws Exception {
        return new SqlSessionTemplate(sqlSessionFactoryDvw());
    }
}

第二个数据库的配置类

@Configuration
@MapperScan(value = "com.demo.Mybatis.mapper.mapper1", sqlSessionFactoryRef = "sqlSessionFactoryExp")
public class ExpDataSourceConfig {
    @Autowired
    @Qualifier("dsExp")
    DataSource dsExp;

    @Bean
    SqlSessionFactory sqlSessionFactoryExp() throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dsExp);
        return factoryBean.getObject();
    }

    @Bean
    SqlSessionTemplate sqlSessionTemplate2() throws Exception {
        return new SqlSessionTemplate(sqlSessionFactoryExp());
    }
}

四、创建实体类

五、创建数据库访问层

在com.demo.Mybatis.mapper.mapper2包下创建DVWMapper

@Mapper
public interface DVWMapper {

    @Select("select * from ${table} where cur_time > #{start} and cur_time < #{end}")
    List<VibrationEntity> getVibrationData(String table, LocalDateTime start, LocalDateTime end);
}

在com.demo.Mybatis.mapper.mapper1包下创建EXPMapper

@Mapper
public interface EXPMapper{

    @Select("select * from ${table} where cur_time > #{start} and cur_time < #{end}")
    List<ExpLorerEntity> getExpLorerData(String table, String start, String end);
}
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
2月前
|
负载均衡 监控 Java
Spring Cloud Gateway 全解析:路由配置、断言规则与过滤器实战指南
本文详细介绍了 Spring Cloud Gateway 的核心功能与实践配置。首先讲解了网关模块的创建流程,包括依赖引入(gateway、nacos 服务发现、负载均衡)、端口与服务发现配置,以及路由规则的设置(需注意路径前缀重复与优先级 order)。接着深入解析路由断言,涵盖 After、Before、Path 等 12 种内置断言的参数、作用及配置示例,并说明了自定义断言的实现方法。随后重点阐述过滤器机制,区分路由过滤器(如 AddRequestHeader、RewritePath、RequestRateLimiter 等)与全局过滤器的作用范围与配置方式,提
Spring Cloud Gateway 全解析:路由配置、断言规则与过滤器实战指南
|
2月前
|
Java 关系型数据库 MySQL
Spring Boot自动配置:魔法背后的秘密
Spring Boot 自动配置揭秘:只需简单配置即可启动项目,背后依赖“约定大于配置”与条件化装配。核心在于 `@EnableAutoConfiguration` 注解与 `@Conditional` 系列条件判断,通过 `spring.factories` 或 `AutoConfiguration.imports` 加载配置类,实现按需自动装配 Bean。
|
2月前
|
人工智能 Java 开发者
【Spring】原理解析:Spring Boot 自动配置
Spring Boot通过“约定优于配置”的设计理念,自动检测项目依赖并根据这些依赖自动装配相应的Bean,从而解放开发者从繁琐的配置工作中解脱出来,专注于业务逻辑实现。
|
1月前
|
前端开发 Java 应用服务中间件
《深入理解Spring》 Spring Boot——约定优于配置的革命者
Spring Boot基于“约定优于配置”理念,通过自动配置、起步依赖、嵌入式容器和Actuator四大特性,简化Spring应用的开发与部署,提升效率,降低门槛,成为现代Java开发的事实标准。
|
1月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
271 3
|
2月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
532 5
|
2月前
|
传感器 Java 数据库
探索Spring Boot的@Conditional注解的上下文配置
Spring Boot 的 `@Conditional` 注解可根据不同条件动态控制 Bean 的加载,提升应用的灵活性与可配置性。本文深入解析其用法与优势,并结合实例展示如何通过自定义条件类实现环境适配的智能配置。
179 0
探索Spring Boot的@Conditional注解的上下文配置
|
druid Java 关系型数据库
SpringBoot 的多数据源配置
SpringBoot 的多数据源配置
2301 0
SpringBoot 的多数据源配置
|
NoSQL Java 关系型数据库
SpringBoot多数据源配置
在实际的开发或者线上环境中,一般都不仅仅是一个数据库走天下,而是根据业务进行拆分多个数据库,今天就来学习如何对springboot进行多数据源配置。
562 0
SpringBoot多数据源配置
|
Java Spring 数据库连接
下一篇
oss云网关配置