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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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);
}
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
22天前
|
Java 测试技术 数据库
Spring Boot中的项目属性配置
本节课主要讲解了 Spring Boot 中如何在业务代码中读取相关配置,包括单一配置和多个配置项,在微服务中,这种情况非常常见,往往会有很多其他微服务需要调用,所以封装一个配置类来接收这些配置是个很好的处理方式。除此之外,例如数据库相关的连接参数等等,也可以放到一个配置类中,其他遇到类似的场景,都可以这么处理。最后介绍了开发环境和生产环境配置的快速切换方式,省去了项目部署时,诸多配置信息的修改。
|
6天前
|
安全 Java 数据库连接
后端框架的学习----mybatis框架(3、配置解析)
这篇文章详细介绍了MyBatis框架的核心配置文件解析,包括环境配置、属性配置、类型别名设置、映射器注册以及SqlSessionFactory和SqlSession的生命周期和作用域管理。
后端框架的学习----mybatis框架(3、配置解析)
|
4天前
|
运维 Java Nacos
Spring Cloud应用框架:Nacos作为服务注册中心和配置中心
Spring Cloud应用框架:Nacos作为服务注册中心和配置中心
|
17天前
|
缓存 Java 数据库连接
mybatis1.常见配置
本文介绍了MyBatis框架中的常见配置及其加载顺序。配置可通过`properties`元素、资源文件或方法参数传递,其中方法参数传递的属性具有最高优先级。文章列举了几个重要的配置项,如`cacheEnabled`用于全局开启或关闭缓存功能;`lazyLoadingEnabled`控制对象的延迟加载行为;`useGeneratedKeys`允许JDBC支持自动生成主键;`defaultExecutorType`设定默认执行器类型等。此外,还介绍了多环境配置方法,通过`environments`元素可定义不同环境下的数据库连接信息,并可根据需求动态选择加载特定环境
|
22天前
|
监控 NoSQL Java
Spring Boot Actuator 使用和常用配置
Spring Boot Actuator 使用和常用配置
36 5
|
22天前
|
Java Spring
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
41 3
|
8天前
|
Java
SpringBoot 配置多数据源
SpringBoot 配置多数据源
14 0
|
8天前
|
Java Spring
Spring Boot Admin 授权配置
Spring Boot Admin 授权配置
14 0
|
8天前
|
监控 Java Spring
Spring Boot Admin 配置应用
Spring Boot Admin 配置应用
18 0
|
4天前
|
Java 关系型数据库 MySQL
1、Mybatis-Plus 创建SpringBoot项目
这篇文章是关于如何创建一个SpringBoot项目,包括在`pom.xml`文件中引入依赖、在`application.yml`文件中配置数据库连接,以及加入日志功能的详细步骤和示例代码。