0
点赞
收藏
分享

微信扫一扫

springboot mysql连接主从

丹柯yx 2024-10-10 阅读 43

Spring Boot MySQL 主从连接实现指南

在现代应用中,数据库的读写分离是提升性能与可用性的重要手段。Spring Boot 提供了灵活的方式来支持 MySQL 的主从数据库连接。在本篇文章中,我将向你详细讲解如何在 Spring Boot 项目中实现 MySQL 的主从数据源连接。

整体流程

在实现 Spring Boot 的 MySQL 主从连接之前,我们首先要明确整个过程。下面是实现步骤的表格:

步骤 描述
1 添加依赖
2 配置数据源
3 创建配置类
4 创建 DAO 和 Service
5 测试连接

以下是用 mermaid 语法展示的流程图:

flowchart TD
    A[开始] --> B[添加依赖]
    B --> C[配置数据源]
    C --> D[创建配置类]
    D --> E[创建 DAO 和 Service]
    E --> F[测试连接]
    F --> G[结束]

步骤详解

1. 添加依赖

首先,在 pom.xml 文件中添加如下依赖:

<dependencies>
    <!-- Spring Boot Starter Data JPA -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <!-- MySQL Driver -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

解释: 这些依赖用于支持 Spring Data JPA 和 MySQL 数据库连接。

2. 配置数据源

application.ymlapplication.properties 中配置数据源。示例如下:

spring:
  datasource:
    master:
      url: jdbc:mysql://localhost:3306/master_db
      username: root
      password: password
      driver-class-name: com.mysql.cj.jdbc.Driver
    slave:
      url: jdbc:mysql://localhost:3306/slave_db
      username: root
      password: password
      driver-class-name: com.mysql.cj.jdbc.Driver

解释: 指定了主数据库和从数据库的连接信息。

3. 创建配置类

接下来,我们需要创建数据源的配置类,示例代码如下:

@Configuration
@EnableTransactionManagement
public class DataSourceConfig {

    @Primary
    @Bean(name = "masterDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.master")
    public DataSource masterDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "slaveDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.slave")
    public DataSource slaveDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean
    public JdbcTemplate masterJdbcTemplate(@Qualifier("masterDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

    @Bean
    public JdbcTemplate slaveJdbcTemplate(@Qualifier("slaveDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}

解释:

  • @Configuration:标识这是一个配置类。
  • @Primary:标识主数据源,用于事务管理。
  • @Bean:创建一个 Spring 管理的 Bean。
  • @ConfigurationProperties:从配置文件读取属性。

4. 创建 DAO 和 Service

在 DAO 层,分别为主库和从库创建数据访问对象。

@Repository
public class UserDao {

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

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

    public void saveUser(User user) {
        String sql = "INSERT INTO user(name, email) VALUES(?, ?)";
        masterJdbcTemplate.update(sql, user.getName(), user.getEmail());
    }

    public List<User> getUsers() {
        String sql = "SELECT * FROM user";
        return slaveJdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
    }
}

解释: DAO 直接利用主从数据源,主库用于写操作,从库用于读操作。

5. 测试连接

在你的主程序中,进行连接测试:

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
        testConnections();
    }

    public static void testConnections() {
        // 测试主从连接
        System.out.println("Testing master and slave connections...");
        // 可使用 DAO 进行具体测试 
    }
}

解释: 启动应用后进行简单连接测试。

关系图

最后,我们用 mermaid 语法展示数据库的关系图:

erDiagram
    USER {
        int id
        string name
        string email
    }

结论

通过上述步骤,你已经实现了 Spring Boot 与 MySQL 之间的主从连接。使用主数据库进行写操作,从数据库进行读操作,有效地分担了负载,提高了性能。希望这篇文章对你在项目中实现主从数据库连接有所帮助!如有疑问,欢迎讨论。

举报

相关推荐

0 条评论