springboot后端配置多个数据源、Mysql数据库的便捷方法

yizhihongxing

下面我为大家详细介绍“Spring Boot后端配置多个数据源、MySQL数据库的便捷方法”攻略。

一、引入相关依赖

在pom.xml文件中,引入MyBatis和多数据源依赖:

<!--MyBatis依赖-->
<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <version>${mybatis.version}</version>
</dependency>
<!--多数据源依赖-->
<dependency>
  <groupId>com.zaxxer</groupId>
  <artifactId>HikariCP</artifactId>
  <version>3.4.5</version>
</dependency>

二、配置application.yml文件

在application.yml文件中,进行多数据源的配置,例如配置一个名为primary的数据源和一个名为secondary的数据源。

spring:
  datasource:
    primary:
      jdbc-url: jdbc:mysql://localhost:3306/primary?characterEncoding=utf8&useSSL=false
      username: root
      password: 123456
      driver-class-name: com.mysql.jdbc.Driver
      type: com.zaxxer.hikari.HikariDataSource
      hikari:
        pool-name: primary-db-pool
        minimum-idle: 5
        maximum-pool-size: 20
        connection-timeout: 30000
        idle-timeout: 600000
        max-lifetime: 1800000
    secondary:
      jdbc-url: jdbc:mysql://localhost:3306/secondary?characterEncoding=utf8&useSSL=false
      username: root
      password: 123456
      driver-class-name: com.mysql.jdbc.Driver
      type: com.zaxxer.hikari.HikariDataSource
      hikari:
        pool-name: secondary-db-pool
        minimum-idle: 5
        maximum-pool-size: 20
        connection-timeout: 30000
        idle-timeout: 600000
        max-lifetime: 1800000

三、创建数据源的配置类

根据不同的数据源,在代码中分别创建数据源的配置类,例如:

@Configuration
@EnableTransactionManagement
@MapperScan(basePackages = {"com.example.mapper.primary"}, sqlSessionFactoryRef = "primarySqlSessionFactory")
public class PrimaryDataSourceConfig {

  @Bean(name = "primaryDataSource")
  @Primary
  @ConfigurationProperties(prefix = "spring.datasource.primary")
  public DataSource dataSource() {
      return DataSourceBuilder.create().type(HikariDataSource.class).build();
  }

  @Bean(name = "primarySqlSessionFactory")
  @Primary
  public SqlSessionFactory sqlSessionFactory(@Qualifier("primaryDataSource") DataSource dataSource,
                                     @Qualifier("mybatisConfig") MybatisConfigurationProperties configurationProperties)
      throws Exception {
      final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
      sessionFactory.setDataSource(dataSource);
      sessionFactory.setTypeHandlersPackage("com.example.mybatis.typehandler");
      sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
              .getResources("classpath:mybatis/mapper/primary/*.xml"));
      sessionFactory.setConfiguration(configurationProperties.getConfiguration());
      return sessionFactory.getObject();
  }

  @Bean(name = "primaryDataSourceTransactionManager")
  @Primary
  public DataSourceTransactionManager transactionManager(@Qualifier("primaryDataSource") DataSource dataSource) {
      return new DataSourceTransactionManager(dataSource);
  }
}

四、在代码中使用不同数据源

如需要在service层中使用另一个数据源,则需使用@Qualifier注解标明需要使用的数据源,例如:

@Service
@Transactional
public class UserService {

    @Autowired
    @Qualifier("secondarySqlSessionFactory")
    private SqlSessionFactory secondarySqlSessionFactory;

    public User getUserById(Long id) {
        try (SqlSession sqlSession = secondarySqlSessionFactory.openSession()) {
            UserDao userDao = sqlSession.getMapper(UserDao.class);
            return userDao.selectById(id);
        }
    }
}

这样,我们就可以方便地进行多数据源配置了。

另外,如果需要进行读写分离,可以使用ShardingSphere等中间件来实现。

关于在Spring Boot中使用多数据源,我写了一篇博客,里面包含了详细的代码示例:Spring Boot后端配置多个数据源、MySQL数据库的便捷方法

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot后端配置多个数据源、Mysql数据库的便捷方法 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • SQL中where和having的区别详解

    标题 SQL中where和having的区别详解 简介 在使用SQL语言进行数据查询时,where和having是两个常用的条件语句。在实际使用中,它们有着不同的用途和特点。本文将详细讲解where和having的区别,并提供实例作为示范。 where的定义和用途 where是SQL语句中常见的条件语句之一,可以在查询过程中筛选符合条件的数据。一般情况下,w…

    database 2023年5月18日
    00
  • Python实现的爬取豆瓣电影信息功能案例

    Python实现的爬取豆瓣电影信息功能攻略 1. 前言 随着互联网技术的快速发展,我们可以通过Python编写爬虫程序轻松地获取各种网站上的数据。本次攻略将教你如何使用Python爬虫爬取豆瓣电影的信息。 2. 爬虫流程 2.1 网页分析 在进行爬虫之前,我们首先需要对目标网站的页面结构进行分析。我们以豆瓣电影首页(https://movie.douban.…

    database 2023年5月21日
    00
  • 如何使用Python从数据库中导出数据并将其保存到JSON文件中?

    以下是如何使用Python从数据库中导出数据并将其保存到JSON文件中的完整使用攻略。 使用Python从数据库中导出数据并将其保存到JSON中的前提条件 在Python中从数据库中导出数据并将其保存到JSON文件中前,需要确保已经安装并启动支持出数据的数据库,例如MySQL或PostgreSQL,并且需要安装Python的相应数据库驱动程序,例如mysql…

    python 2023年5月12日
    00
  • Redis主从复制问题和扩容问题的解决思路

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/106.html?1455867541 一、解决主从复制问题 当使用Redis作为存储引擎的时候,并且使用Redis​读写分离,从机作为读的情况,从机宕机或者和主机断开连接都需要重新连接主机,重新连接主机都会触发全量的主从复制,这时候主…

    Redis 2023年4月13日
    00
  • Java如何读取配置文件并赋值静态变量

    Java读取配置文件并将值赋给静态变量的操作是应用程序中常见的需求。下面是以properties文件为例,讲解如何读取并赋值静态变量的步骤: 1. 准备配置文件 首先需要准备一个.properties文件,其中包含一组键值对,如下所示: jdbc.url=jdbc:mysql://localhost:3306/test jdbc.username=root …

    database 2023年5月21日
    00
  • 主键和唯一键之间的区别

    主键(Primary Key)和唯一键(Unique Key)都是数据库中用于唯一标识某个记录的关键字段,并且在数据库中进行数据处理时非常重要。虽然主键和唯一键都具有唯一性的特点,但它们之间还存在一些差别。 主键 定义 主键是唯一标识一张数据库表中某一行数据的字段或属性。主键在数据库表中必须唯一、非空,且不允许重复。一般情况下,主键是一个整数类型的自增长字段…

    database 2023年3月27日
    00
  • 计算机二级考试MySQL知识点 mysql alter命令

    以下是关于计算机二级考试MySQL知识点mysql alter命令的完整攻略: 一、什么是mysql alter命令? MySQL中的ALTER命令用于修改已有的数据库表结构,可以对表的列、索引、约束等进行更改。 语法格式如下: ALTER TABLE table_name action; 其中,table_name是需要修改的数据库表名,action是需要…

    database 2023年5月19日
    00
  • IBM DB2 Connect简介(1)

    IBM DB2 Connect简介 概述 IBM DB2 Connect是一种解决方案,用于实现DB2 on z/OS服务器上的数据和应用程序与其他计算机系统的通信。DB2 Connect 支持多种通信协议,包括TCP/IP、LU 6.2、SNA、APPN和APPC,这使得DB2 Connect可以通过公司的Intranet和Internet连接到IBM所有…

    database 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部