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

下面我为大家详细介绍“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数据库修复软件2.6用友金蝶浪潮管家婆思迅浪潮病毒

    攻略:使用达思SQL数据库修复软件2.6修复用友、金蝶、浪潮、思迅等数据库中的病毒 背景 使用各种数据库管理软件,如用友、金蝶、浪潮、思迅等,可能会遇到因病毒感染导致数据库损坏的问题。此时,达思SQL数据库修复软件是一种比较有效的解决方案。 需要准备 损坏的数据库文件 达思SQL数据库修复软件2.6 步骤 首先,安装好达思SQL数据库修复软件2.6,打开软件…

    database 2023年5月18日
    00
  • Mysql执行原理之索引合并步骤详解

    让我们来详细讲解一下“Mysql执行原理之索引合并步骤详解”。 索引合并步骤的定义 当一个查询语句中存在多个条件时,如果MySQL无法将这些条件合并为一个索引,请使用”Index Merge Optimization“,即“索引合并优化”,来通过执行多次索引扫描来解决查询问题。 索引合并步骤的执行流程 打开所有参与索引合并的表 扫描第一个条件的索引并找到符合…

    database 2023年5月22日
    00
  • MySQL OOM 系列一 Linux内存分配

    MySQL OOM 系列一 Linux内存分配攻略 什么是OOM OOM发生时,系统会杀掉一个或多个进程,来释放内存,让内存使用率回落到一个安全值。这个被杀掉的进程就成为了“OOM Killer”的牺牲品。 OOM为何会发生 OOM通常是由于系统内存不足而引起。当系统内存使用率超过其最大限制时,Linux内核将开始使用OOM Killer来释放内存。这是一种…

    database 2023年5月22日
    00
  • 关于mysql数据库格式化简单介绍

    下面是“关于Mysql数据库格式化简单介绍”的完整攻略。 Mysql数据库格式化简单介绍 什么是Mysql数据库格式化 Mysql数据库格式化是指将Mysql数据库中的数据表、数据列、索引、视图、存储过程等物理结构规范化,让它们符合一定的规则和标准,以提高Mysql数据库的性能、可读性和可维护性。Mysql数据库格式化通常涉及到的内容有: 数据表格式化 数据…

    database 2023年5月22日
    00
  • openstack云计算组件keystone部署及操作使用技巧

    OpenStack云计算组件Keystone部署及操作使用技巧 1. 简介 Keystone是OpenStack云计算平台的身份认证组件,也是所有OpenStack组件的身份鉴别服务提供者。Keystone基于OAuth2协议来实现身份认证和授权,支持多种身份认证方式,例如用户名/密码、LDAP、OAuth等。 2. 部署Keystone 在部署Keysto…

    database 2023年5月22日
    00
  • Linux启动/停止/重启Mysql数据库的简单方法(推荐)

    下面是详细的攻略。 Linux启动/停止/重启Mysql数据库的简单方法 Mysql是一款非常流行的关系型数据库,Linux用户经常会使用这个数据库。在Linux中,启动/停止/重启Mysql可以使用systemd(系统守护进程)管理命令来实现。下面我们将分别介绍如何使用systemd启动/停止/重启Mysql。 1. 启动Mysql 在Linux中,启动M…

    database 2023年5月22日
    00
  • DBMS 中的多值依赖

    DBMS中的多值依赖(Multivalued Dependency,简称MVD)是指一个关系模式中,存在两个或多个非主属性相互独立地决定了其他属性的值。MVD的存在意味着关系模式中的各个属性并不都依赖于关系模式中的主键,而是存在相互依赖的情况。下面我们来详细讲解一下多值依赖的相关知识。 1. MVD的定义 关系模式R上的一个多值依赖是指关系模式R的两个或多个…

    database 2023年3月27日
    00
  • Oracle 数据库连接查询SQL语句

    下面是 Oracle 数据库连接查询 SQL 语句的完整攻略及示例说明: 1. 连接查询的基本概念 连接查询是指在两个或多个表之间通过共同的字段进行关联,以便获取相关联的数据。在 Oracle 数据库中可以通过 SQL 语句实现连接查询,常用的有内连接、左连接、右连接和全连接等四种方式。 2. 内连接查询 内连接查询是指只返回两个表之间有匹配的行,不返回无关…

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