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日

相关文章

  • Mysql DBA 20天速成教程

    首先我们来介绍一下什么是Mysql DBA以及为什么需要学习Mysql DBA。Mysql DBA是指Mysql数据库管理员,负责维护和管理Mysql数据库,包括安装、升级、备份、恢复、监控、性能调优等工作。由于Mysql是最流行的开源关系型数据库之一,因此Mysql DBA的职业前景非常广阔,是非常值得学习的一门技能。 接下来以“Mysql DBA 20天…

    database 2023年5月19日
    00
  • MySQL递归查询树状表的子节点、父节点具体实现

    下面就为你详细讲解MySQL递归查询树状表的子节点、父节点具体实现的完整攻略。 1. 背景 在数据库中,常常会有树状结构的数据存在,例如部门管理、商品分类等。如何高效地查询树状表的子节点和父节点是我们面临的一个问题。 2. 子节点查询 子节点查询就是查询某个节点下的所有子节点,也就是树状结构的所有下级节点。下面是一个示例,我们以部门管理为例: 假设我们的部门…

    database 2023年5月22日
    00
  • 达思sql数据库修复软件2.6用友金蝶浪潮管家婆思迅浪潮病毒

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

    database 2023年5月18日
    00
  • mySQL建表及练习题(上)

          create table student( sno varchar(20)not null primary key, sname varchar(20)not null, ssex varchar(20)not null, sbirthday datetime null, class varchar(20)null ); insert into …

    MySQL 2023年4月13日
    00
  • Redis服务器的启动过程分析

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/127.html?1455808771 本文将通过分析代码来介绍Redis的启动过程,通过查看Redis 的启动脚本,得知Redis的启动时从Redis.c的main方法开始的。Redis启动可以分为以下几个步骤: 1.初始化Redis…

    Redis 2023年4月13日
    00
  • DBMS 中的非平凡函数依赖

    非平凡函数依赖是指当任意一个属性从某个属性集中删除时,它不再跟这个属性集函数依赖的属性集完全相同。具体来说,考虑一个关系模式 R,若存在非平凡函数依赖 A → B,那么 A 和 B 是非平凡的属性集且不存在 C ⊆ A 以及 C → B,则 R 的设计可能存在冗余。 举个例子,假设我们有一个关系模式 R(a, b, c),并且存在非平凡函数依赖 a → bc…

    database 2023年3月27日
    00
  • Mysql通过explain分析定位数据库性能问题

    当我们在使用Mysql数据库时,会遇到一些性能问题,例如查询速度慢等,这时就需要通过explain分析定位数据库性能问题。 下面是Mysql通过explain分析定位数据库性能问题的完整攻略: 1. 查看查询语句的执行计划 在查询语句前加上”explain”关键字,就可以查看该查询语句的执行计划。执行计划是Mysql优化器生成的一种树形结构,用于描述查询所需…

    database 2023年5月19日
    00
  • mysql修改记录时update操作 字段=字段+字符串

    当需要在 MySQL 中修改记录时,我们可以使用 UPDATE 命令来实现。通常情况下,我们会使用等号操作符将新的值赋给要修改的字段。例如: UPDATE mytable SET name=’new name’ WHERE id=1; 但是,有时候我们需要将原有的字段值和一些字符串进行拼接,而不是完全覆盖原有的值。这种情况下,我们可以使用 CONCAT 函数…

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