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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 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);
}
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
14天前
|
SQL Java 数据库连接
(自用)Spring常用配置
(自用)Spring常用配置
16 0
|
7天前
|
存储 安全 Java
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(下)
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(下)
16 0
|
7天前
|
安全 Java 数据库
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(上)
第2章 Spring Security 的环境设置与基础配置(2024 最新版)
29 0
|
8天前
|
安全 Java Spring
Spring Security 5.7 最新配置细节(直接就能用),WebSecurityConfigurerAdapter 已废弃
Spring Security 5.7 最新配置细节(直接就能用),WebSecurityConfigurerAdapter 已废弃
19 0
|
8天前
|
安全 Java 应用服务中间件
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
24 0
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
|
10天前
|
XML Java C++
【Spring系列】Sping VS Sping Boot区别与联系
【4月更文挑战第2天】Spring系列第一课:Spring Boot 能力介绍及简单实践
【Spring系列】Sping VS Sping Boot区别与联系
|
14天前
|
JSON Java 数据库连接
属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践
属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践
23 1
|
14天前
|
Java 数据库连接 Spring
简化配置,提高灵活性:Spring中的参数化配置技巧
简化配置,提高灵活性:Spring中的参数化配置技巧
19 0
|
14天前
|
Java Shell 测试技术
一次配置,多场景适用:Spring Boot多套配置文件的深度剖析
一次配置,多场景适用:Spring Boot多套配置文件的深度剖析
31 0
一次配置,多场景适用:Spring Boot多套配置文件的深度剖析
|
17天前
|
存储 关系型数据库 MySQL
【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)
【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)