SpringBoot 配置多个JdbcTemplate的实现步骤

 更新时间:2024年11月27日 08:40:20   作者:忧伤夏天的风  
本文介绍了在SpringBoot中配置多个JdbcTemplate的方法,包括创建项目、添加依赖、配置数据源和多个JdbcTemplate的使用,感兴趣的可以了解一下

前言

开发中使用多数据源配置是一个非常常见的需求。Spring和SpringBoot中,对此都有相应的解决方案。

多数据源的首选分布式数据库中间件MyCat或者Sharing-Jdbc去解决相关问题。使用MyCat,然后分表策略使用sharding-by-intfile。

本文我们只讨论如何在SpringBoot中简单配置多个JdbcTemplate。

一、创建一个SpringBoot 项目,并引入如下依赖

<!--web应用-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!--jdbc -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<!-- mysql驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

<!--druid-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
</dependency>

<!--单元测试-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

二、在application.properties中添加数据源配置

spring.datasource.one.url=jdbc:mysql://localhost:3306/oy1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.one.jdbcUrl=jdbc:mysql://localhost:3306/oy1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.one.username=***
spring.datasource.one.password=***
spring.datasource.one.driver-class-name=com.mysql.cj.jdbc.Driver

spring.datasource.two.url=jdbc:mysql://localhost:3306/oy2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.two.jdbcUrl=jdbc:mysql://localhost:3306/oy2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.two.username=***
spring.datasource.two.password=***
spring.datasource.two.driver-class-name=com.mysql.cj.jdbc.Driver

三、新增DadaSourceConfig.java配置多个数据源以及JdbcTemplate,代码如下:

package com.bestoyc.jdbctemplatedemo;

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;

/**
 * @author oyc
 * @Title: DataSourceConfig
 * @ProjectName jdbctemplatedemo
 * @Description: TODO
 * @date 2019/9/22 0:47
 */
@Configuration
public class DataSourceConfig {

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.one")
    @Qualifier("oneDataSource")
    DataSource dsOne() {
        return DataSourceBuilder.create().build();
    }

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.two")
    @Qualifier("twoDataSource")
    DataSource dsTwo() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "oneJdbcTemplate")
    public JdbcTemplate primaryJdbcTemplate(
            @Qualifier("oneDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

    @Bean(name = "twoJdbcTemplate")
    public JdbcTemplate secondaryJdbcTemplate(
            @Qualifier("twoDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}

四、多个JdbcTemplate使用

@Autowired
@Qualifier("oneJdbcTemplate")
private JdbcTemplate oneJdbcTemplate;

@Autowired
@Qualifier("twoJdbcTemplate")
private JdbcTemplate twoJdbcTemplate;

@RequestMapping("/createUser1")
public String createUser1() {
    oneJdbcTemplate.update("INSERT INTO `user`(`id`, `name`, `age`) VALUES (?,?,?);", null,"ouyang", 12);
    return "success";
}

@RequestMapping("/createUser2")
public String createUser2() {
    twoJdbcTemplate.update("INSERT INTO `user`(`id`, `name`, `age`) VALUES (?,?,?);", null,"ouyang", 12);
    return "success";
}

这里只是简单使用,读者可以根据自己的业务需要添加相应的AOP用户数据源的切换。

到此这篇关于SpringBoot 配置多个JdbcTemplate的文章就介绍到这了,更多相关SpringBoot 配置多个JdbcTemplate内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Cloud OpenFeign 远程调用

    Spring Cloud OpenFeign 远程调用

    这篇文章主要介绍了Spring Cloud OpenFeign 远程调用,本文通过远程调用的GitHub开放API用到的OpenFeign作为示例代码作为入口进行讲解。然后以图解+解读源码的方式深入剖析了OpenFeign的运行机制和架构设计,需要的朋友可以参考一下
    2022-08-08
  • 使用ftpClient下载ftp上所有文件解析

    使用ftpClient下载ftp上所有文件解析

    最近项目需要写个小功能,需求就是实时下载ftp指定文件夹下的所有文件(包括子目录)到本地文件夹中,保留文件到目录路径不变。今天小编给大家分享使用ftpClient下载ftp上所有文件的方法,需要的的朋友参考下吧
    2017-04-04
  • IDEA设置允许一个类并行的方法

    IDEA设置允许一个类并行的方法

    这篇文章主要介绍了IDEA设置允许一个类并行的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • IDEA之IDEA连接gitlab协同开发方式

    IDEA之IDEA连接gitlab协同开发方式

    通过IDEA克隆GitLab项目实现代码协同开发相较于使用SourceTree, 通过IDEA连接GitLab进行代码协同开发更显便捷,方法包括通过VersionControl创建新项目,输入项目的git HTTP地址和本地路径,测试连接成功后克隆项目,修改代码后
    2024-11-11
  • SpringBoot学习之基于注解的缓存

    SpringBoot学习之基于注解的缓存

    spring boot对缓存支持非常灵活,我们可以使用默认的EhCache,也可以整合第三方的框架,只需配置即可,下面这篇文章主要给大家介绍了关于SpringBoot学习之基于注解缓存的相关资料,需要的朋友可以参考下
    2022-03-03
  • Springboot @Value使用代码实例

    Springboot @Value使用代码实例

    这篇文章主要介绍了Springboot @Value使用代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java实现MD5加密的方法

    Java实现MD5加密的方法

    这篇文章主要介绍了Java实现MD5加密的方法,实例分析了基于java实现md5加密的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 使用ObjectMapper解析json不用一直new了

    使用ObjectMapper解析json不用一直new了

    这篇文章主要为大家介绍了使用ObjectMapper解析json不用一直new了的方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 关于@Entity和@Table注解的用法详解

    关于@Entity和@Table注解的用法详解

    这篇文章主要介绍了关于@Entity和@Table注解的用法详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • ServletContext读取web资源_动力节点Java学院整理

    ServletContext读取web资源_动力节点Java学院整理

    这篇文章主要介绍了ServletContext读取web资源,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07

最新评论