SpringMVC 连接多个 MySQL 数据库

在开发 Web 应用中,我们常常需要连接多个数据库,来处理不同的数据操作。本文将介绍如何在 SpringMVC 中连接多个 MySQL 数据库,并提供相应的代码示例。

准备工作

在开始之前,我们需要先做一些准备工作:

  1. 确保已经安装好了 JDK 和 MySQL 数据库。
  2. 创建两个数据库,并分别为它们创建两个表。假设我们的数据库名为 db1db2,每个数据库都有一个名为 users 的表,表结构如下:
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

配置数据源

首先,我们需要在 Spring 的配置文件中配置两个数据源,分别对应两个 MySQL 数据库。假设我们的 Spring 配置文件为 spring-config.xml,请参考以下示例代码:

<beans xmlns="
       xmlns:xsi="
       xmlns:context="
       xmlns:jdbc="
       xsi:schemaLocation="
           
           
           
           
           

    <!-- 配置第一个数据源 -->
    <bean id="dataSource1" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/db1" />
        <property name="username" value="root" />
        <property name="password" value="password" />
    </bean>

    <!-- 配置第二个数据源 -->
    <bean id="dataSource2" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/db2" />
        <property name="username" value="root" />
        <property name="password" value="password" />
    </bean>

    <!-- 配置第一个 JdbcTemplate -->
    <bean id="jdbcTemplate1" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource1" />
    </bean>

    <!-- 配置第二个 JdbcTemplate -->
    <bean id="jdbcTemplate2" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource2" />
    </bean>

</beans>

在上述代码中,我们配置了两个数据源 dataSource1dataSource2,分别对应 db1db2 数据库。我们还配置了两个 JdbcTemplate,分别对应两个数据源。

编写数据访问层代码

接下来,我们需要编写数据访问层代码,使用 JdbcTemplate 来操作数据库。请参考以下示例代码:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

@Repository
public class UserRepository {

    private final JdbcTemplate jdbcTemplate1;
    private final JdbcTemplate jdbcTemplate2;

    @Autowired
    public UserRepository(JdbcTemplate jdbcTemplate1, JdbcTemplate jdbcTemplate2) {
        this.jdbcTemplate1 = jdbcTemplate1;
        this.jdbcTemplate2 = jdbcTemplate2;
    }

    public void addUserToDb1(String name, String email) {
        jdbcTemplate1.update("INSERT INTO users (name, email) VALUES (?, ?)", name, email);
    }

    public void addUserToDb2(String name, String email) {
        jdbcTemplate2.update("INSERT INTO users (name, email) VALUES (?, ?)", name, email);
    }

}

在上述代码中,我们创建了一个名为 UserRepository 的数据访问层类。通过构造函数注入了两个 JdbcTemplate,分别对应两个数据源。我们提供了两个方法 addUserToDb1addUserToDb2,用于向 db1db2 数据库的 users 表中插入数据。

编写控制器代码

最后,我们需要编写一个控制器类,用于接收用户请求