SpringBoot-14-JdbcTemplate多数据源操作

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 在上一章节中我们已经介绍了在Springboot中使用JdbcTemplate来完成对mysql数据库的基本操作,本章节主要介绍当我们在项目中需要使用多个数据源的时候JdbcTemplate是怎么进行配置的。本章节是在上章节代码使用JdbcTemplate链接Mysql数据库基础上进行修改的。

SpringBoot-14-JdbcTemplate多数据源操作


在上一章节中我们已经介绍了在Springboot中使用JdbcTemplate来完成对mysql数据库的基本操作,本章节主要介绍当我们在项目中需要使用多个数据源的时候JdbcTemplate是怎么进行配置的。本章节是在上章节代码使用JdbcTemplate链接Mysql数据库基础上进行修改的。



1.JdbcTemplate多数据源配置

application.yml中设置我们要链接的数据库配置,例子如下:

server:
  port: 8899
spring:
  datasource:
    primary:
      jdbc-url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf-8&useSSL=false
      username: root
      password: root
      driver-class-name: com.mysql.cj.jdbc.Driver
    second:
      jdbc-url: jdbc:mysql://localhost:3306/verse?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf-8&useSSL=false
      username: root
      password: root
      driver-class-name: com.mysql.cj.jdbc.Driver



在配置多数据源的时候,和单数据源区别在于spring:datasource后多设置一个数据源名称,例如primary,second来区分数据库来源。


在SpringBoos多数据源配置url中SpringBoot1.x和SpringBoot2.X有区别,SpringBoot1.x使用url进行链接,SpringBoot2.X使用jdbc-url进行链接。


2.对JBDC数据源进行初始化配置

在application.yml中配置过多数据源信息以后,我们需要创建一个配置类去加载这些配置信息,用来对数据库初始化。

@Configuration
public class MyDataSourceConfiguration {
    /**
     * 使用Primary来表示主数据有
     * @return
     */
    @Primary
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.primary")
    public DataSource primaryDataSource() {
        return DataSourceBuilder.create().build();
    }
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.second")
    public DataSource secondDataSource() {
        return DataSourceBuilder.create().build();
    }
    @Bean
    public JdbcTemplate primaryJdbcTemplate(@Qualifier("primaryDataSource") DataSource primaryDataSource) {
        return new JdbcTemplate(primaryDataSource);
    }
    @Bean
    public JdbcTemplate secondJdbcTemplate(@Qualifier("secondDataSource") DataSource secondaryDataSource) {
        return new JdbcTemplate(secondaryDataSource);
    }
}


  • @Primary表示主数据源,在不指定数据源的情况下使用主数据源
  • 为什么不用@Qualifier指定?当我们不指定的时候,会采用参数的名字来查找Bean,存在的话就注入。
  • 当我们创建Bean的时候,默认会使用方法名称来作为Bean的名称,所以这里就对应上了



在service层进行修改代码

@AllArgsConstructor
@Service
public class StudentServiceImpl implements StudentService {
    private JdbcTemplate primaryJdbcTemplate;
    private JdbcTemplate secondJdbcTemplate;
    @Override
    public List<Student> getAllSutdents() {
        List<Student> students = primaryJdbcTemplate.query("select name,sex,age,mobile,email from student where is_enabled=1", (resultSet, i) -> {
            Student stu = new Student();
            stu.setName(resultSet.getString("name"));
            stu.setSex(resultSet.getString("sex"));
            stu.setAge(resultSet.getInt("age"));
            stu.setMobile(resultSet.getString("mobile"));
            stu.setEmail(resultSet.getString("email"));
            return stu;
        });
        return students;
    }
    @Override
    public int Create(String name,String sex, int age,String mobile, String email) {
        int update = primaryJdbcTemplate.update("INSERT INTO student(name ,sex,age,mobile,email) VALUES(?,?,?,?,?)",
                name, sex, age, mobile, email);
        return update;
    }
    @Override
    public int deleteByName(String name) {
        return primaryJdbcTemplate.update("update student set is_enabled=0 where name = ?", name);
    }
}



以上就是我介绍的JdbcTemplate对多数据源操作,代码测试可以通过http://localhost:8899/student/方法的方式进行测试。

如果您觉得本文不错,欢迎关注我支持,您的关注是我坚持的动力!


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
9天前
|
Java 数据库连接
SpringBoot配置多数据源实战
第四届光学与机器视觉国际学术会议(ICOMV 2025) 2025 4th International Conference on Optics and Machine Vision
37 8
|
5月前
|
druid Java 关系型数据库
Spring Boot2 系列教程(二十五)Spring Boot 整合 Jpa 多数据源
Spring Boot2 系列教程(二十五)Spring Boot 整合 Jpa 多数据源
|
6月前
|
Java 关系型数据库 数据库
Spring Boot多数据源及事务管理:概念与实战
【4月更文挑战第29天】在复杂的企业级应用中,经常需要访问和管理多个数据源。Spring Boot通过灵活的配置和强大的框架支持,可以轻松实现多数据源的整合及事务管理。本篇博客将探讨如何在Spring Boot中配置多数据源,并详细介绍事务管理的策略和实践。
485 3
|
3月前
|
Java
SpringBoot 配置多数据源
SpringBoot 配置多数据源
37 0
|
4月前
|
开发框架 Java 数据库
Spring Boot集成多数据源的最佳实践
Spring Boot集成多数据源的最佳实践
|
4月前
|
开发框架 Java 数据库
Spring Boot集成多数据源的最佳实践
Spring Boot集成多数据源的最佳实践
|
5月前
|
druid Java 关系型数据库
在Spring Boot中集成Druid实现多数据源有两种常用的方式:使用Spring Boot的自动配置和手动配置。
在Spring Boot中集成Druid实现多数据源有两种常用的方式:使用Spring Boot的自动配置和手动配置。
794 5
|
5月前
|
Java 数据管理 关系型数据库
Spring Boot中实现多数据源配置
Spring Boot中实现多数据源配置
|
5月前
|
关系型数据库 数据库 数据安全/隐私保护
springboot+dynamic-datasource多数据源配置动态切换
springboot+dynamic-datasource多数据源配置动态切换
662 0
|
6月前
|
存储 缓存 Java
SpringBoot 整合多数据源的事务问题
多数据源实现、切面的优先级问题(Order注解)、事务的传播特性(Propagation类)