SpringBoot项目同时使用mysql和sqlserver

在开发过程中,有时候我们需要同时连接多个数据库来完成各种业务需求。本文将介绍如何在SpringBoot项目中同时使用Mysql和SQLServer数据库。

第一步:添加数据库依赖

首先,在pom.xml文件中添加Mysql和SQLServer的数据库依赖。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
</dependency>

第二步:配置数据源

application.properties文件中配置Mysql和SQLServer的数据源。

# Mysql数据源配置
spring.datasource.mysql.url=jdbc:mysql://localhost:3306/db_mysql
spring.datasource.mysql.username=root
spring.datasource.mysql.password=root
spring.datasource.mysql.driver-class-name=com.mysql.cj.jdbc.Driver

# SQLServer数据源配置
spring.datasource.sqlserver.url=jdbc:sqlserver://localhost:1433;databaseName=db_sqlserver
spring.datasource.sqlserver.username=sa
spring.datasource.sqlserver.password=sa
spring.datasource.sqlserver.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver

第三步:创建实体类和Repository

创建Mysql和SQLServer对应的实体类和Repository。

// Mysql实体类
@Entity
@Table(name = "mysql_table")
public class MysqlEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    // getters and setters
}

// Mysql Repository
public interface MysqlRepository extends JpaRepository<MysqlEntity, Long> {
}

// SQLServer实体类
@Entity
@Table(name = "sqlserver_table")
public class SqlServerEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    // getters and setters
}

// SQLServer Repository
public interface SqlServerRepository extends JpaRepository<SqlServerEntity, Long> {
}

第四步:Service层和Controller层

创建Service层和Controller层,分别调用MysqlRepository和SqlServerRepository。

// Mysql Service
@Service
public class MysqlService {
    @Autowired
    private MysqlRepository mysqlRepository;

    public List<MysqlEntity> getAllMysqlEntities() {
        return mysqlRepository.findAll();
    }
}

// SQLServer Service
@Service
public class SqlServerService {
    @Autowired
    private SqlServerRepository sqlServerRepository;

    public List<SqlServerEntity> getAllSqlServerEntities() {
        return sqlServerRepository.findAll();
    }
}

// Controller
@RestController
public class DatabaseController {
    @Autowired
    private MysqlService mysqlService;
    
    @Autowired
    private SqlServerService sqlServerService;
    
    @GetMapping("/mysql")
    public List<MysqlEntity> getMysqlEntities() {
        return mysqlService.getAllMysqlEntities();
    }
    
    @GetMapping("/sqlserver")
    public List<SqlServerEntity> getSqlServerEntities() {
        return sqlServerService.getAllSqlServerEntities();
    }
}

类图

使用Mermaid语法绘制类图如下:

classDiagram
    class MysqlEntity {
        id: Long
        name: String
    }
    class SqlServerEntity {
        id: Long
        name: String
    }
    MysqlEntity <|-- MysqlRepository
    SqlServerEntity <|-- SqlServerRepository

总结

通过以上步骤,我们可以在SpringBoot项目中实现同时连接Mysql和SQLServer数据库的功能。在实际项目中,根据具体需求可以对数据库配置、实体类和Repository进行进一步的定制和扩展,以适应业务需求。希望本文能够帮助到你在开发过程中遇到类似问题时的解决方案。

引用: