📌  相关文章
📜  如果不存在,则创建数据库 mysql true spring boot - TypeScript (1)

📅  最后修改于: 2023-12-03 15:24:58.334000             🧑  作者: Mango

如果不存在,则创建数据库 MySQL - Spring Boot with TypeScript

在开发应用程序时,我们经常需要使用数据库来存储数据和进行相关操作。使用MySQL时,存在一种常见情境,即需要在程序中判断数据库是否存在,若不存在则创建一个新的数据库。本文将介绍如何在Spring Boot with TypeScript中使用MySQL来实现这一功能。

前置条件

在开始之前,您需要了解以下内容:

  • Spring Boot的基础知识
  • MySQL数据库的基础知识
  • TypeScript的基础知识
实现方法
1. 添加MySQL依赖项

首先,在您的Spring Boot with TypeScript项目的pom.xml文件中添加MySQL依赖项:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>{版本号}</version>
</dependency>
2. 创建数据库配置文件

在您的Spring Boot with TypeScript项目的src/main/resources文件夹中创建application.yml配置文件:

spring:
  datasource:
    url: jdbc:mysql://{数据库地址}:{数据库端口}/{数据库名称}?useSSL=false&serverTimezone=UTC
    username: {数据库用户名}
    password: {数据库密码}
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: none
    show-sql: true

这里,您需要修改以下属性:

  • {数据库地址}: 您的MySQL数据库的IP地址或域名
  • {数据库端口}: 您的MySQL数据库的端口号,默认为3306
  • {数据库名称}: 您想要创建的数据库名称
  • {数据库用户名}: MySQL数据库的用户名
  • {数据库密码}: MySQL数据库的密码
  • {版本号}: 您想要使用的MySQL版本号
3. 创建MySQL服务类

创建一个MySQL服务类用于创建数据库。在您的Spring Boot with TypeScript项目中创建一个名为MySQLService的服务类:

import { Injectable } from '@nestjs/common';
import { createConnection, Connection } from 'typeorm';

@Injectable()
export class MySQLService {
  private connection: Connection;

  constructor() {
    this.createDatabase();
  }

  async createDatabase() {
    this.connection = await createConnection({
      type: 'mysql',
      host: '{数据库地址}',
      port: {数据库端口},
      username: '{数据库用户名}',
      password: '{数据库密码}',
      database: null,
      entities: [],
      synchronize: true,
    });

    await this.connection.query(`CREATE DATABASE IF NOT EXISTS {数据库名称}`);
    this.connection.close();
  }
}

这里,您需要修改以下属性:

  • {数据库地址}: 您的MySQL数据库的IP地址或域名
  • {数据库端口}: 您的MySQL数据库的端口号,默认为3306
  • {数据库名称}: 您想要创建的数据库名称
  • {数据库用户名}: MySQL数据库的用户名
  • {数据库密码}: MySQL数据库的密码
4. 注入MySQL服务

在您的Spring Boot with TypeScript项目的app.module.ts文件中导入MySQLService:

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { MySQLService } from './mysql.service';

@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService, MySQLService],
})
export class AppModule {}

这样,MySQLService就可以通过依赖注入来在应用程序启动时创建数据库。

运行应用程序

在您的Spring Boot with TypeScript项目的根目录下执行以下命令以启动应用程序:

mvn spring-boot:run

当应用程序启动时,MySQLService会检查是否已创建了指定名称的数据库。如果不存在,MySQLService会自动创建一个新的数据库。

结论

我们已经展示了在Spring Boot with TypeScript中如何创建一个MySQL服务类用于创建数据库。希望本文对您有所帮助。