ホームページ  >  記事  >  Java  >  SpringBoot でデータベース テーブルを自動的に作成する Java を実装する方法

SpringBoot でデータベース テーブルを自動的に作成する Java を実装する方法

WBOY
WBOY転載
2023-05-19 12:34:062898ブラウズ

SpringBoot 環境起動プロジェクトはデータベース テーブルを作成します

環境を使用します

windows eclipse mysql navicat

手順

1. SpringBoot プロジェクトを作成します

2. 新しいデータベースを作成し、接続情報を構成します

3. 初期化データベース テーブル クラスを書き込みます

4. 実行して結果を表示します

1. SpringBoot プロジェクト

SpringBoot プロジェクトの作成方法についてはこれ以上詳しく説明しません。実行可能な SpringBoot プロジェクトを作成するだけです。

2. 新しいデータベースを作成し、接続情報を設定します

2.1 新しいデータベースを作成します

Navicat を開き、新しい Mysql 接続 (ユーザー名や接続情報など) を作成します。パスワードは覚えておく必要があります。以下の接続情報を設定し(使用する)、接続を確立した後に新しいデータベースを作成し、データベース名を「nfsj」に設定します。これは独自の設定に従って設定されます。構成情報を変更することを忘れないでください。下に。

2.2 接続情報の構成

プロジェクト内で次のファイルを見つけ、ファイルを開いて構成を追加します。

SpringBoot でデータベース テーブルを自動的に作成する Java を実装する方法

上記を開きますファイルを開き、次のコードを追加します。

# datasource
folivora.datasource.url=jdbc:mysql://localhost:3306/nfsj?useUnicode=true&characterEncoding=utf-8
folivora.datasource.username=root
folivora.datasource.password=123456
folivora.datasource.driver-class-name=com.mysql.jdbc.Driver

注: ここでの構成情報は、データベースを作成したときの構成情報と同じです。

3. 初期化データベーステーブルクラスを記述する

プロジェクトディレクトリ src/main/java の下に新しいパッケージを作成し、必要に応じて登録し、そのパッケージの下に class を使用して新しいクラスを作成します名前は「InitSysAdminDivisions.java」(クラス名は自分で付けることもできます)。

InitSysAdminDivisions.java

package cn.idatatech.folivora.modules.sys.common;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Repository;

//SpringBoot单元测试启动类注解
//@RunWith(SpringRunner.class)
//@SpringBootTest
//@Component
@Repository  //继承自@Component,作用于持久层
/**
 * 如果配置文件没有在默认目录下,使用注解@PropertySource获取,下面演示的是在多配置文件中获取相同属性名的值,以后置为准
 * 单配置文件只要一个路径参数就可以
 */
//@PropertySource({"classpath:application.properties","classpath:config/config.properties"})  
public class InitSysAdminDivisions {

	@Value(value = "${folivora.datasource.driver-class-name}")
	private String driver;   
	
	@Value(value = "${folivora.datasource.url}")
	private String url;   
	
	@Value(value = "${folivora.datasource.username}")
	private String userName;
	
	@Value(value = "${folivora.datasource.password}")
	private String password;
	
	@PostConstruct
	public void init() throws SQLException, ClassNotFoundException{
		//连接数据库
		Class.forName(driver);
		//测试url中是否包含useSSL字段,没有则添加设该字段且禁用
		if( url.indexOf("?") == -1 ){
			url = url + "?useSSL=false" ;
		}
		else if( url.indexOf("useSSL=false") == -1 || url.indexOf("useSSL=true") == -1 )
		{
			url = url + "&useSSL=false";
		}
		Connection conn = DriverManager.getConnection(url, userName, password);
		Statement stat = conn.createStatement();
		//获取数据库表名
		ResultSet rs = conn.getMetaData().getTables(null, null, "sys_admin_divisions", null);
		
		// 判断表是否存在,如果存在则什么都不做,否则创建表
		if( rs.next() ){
			return;
		}
		else{
			// 先判断是否纯在表名,有则先删除表在创建表
//			stat.executeUpdate("DROP TABLE IF EXISTS sys_admin_divisions;CREATE TABLE sys_admin_divisions("
			//创建行政区划表
			stat.executeUpdate("CREATE TABLE sys_admin_divisions("
					+ "ID varchar(32) NOT NULL COMMENT "行政区划ID(行政区划代码)这里不使用32位的UUID,使用全数字的行政区域代码作为ID(如:440000)","
					+ "TYPE varchar(50) DEFAULT NULL COMMENT "类型(1省级 2市级 3区县)","
					+ "CODE varchar(50) DEFAULT NULL COMMENT "字母代码","
					+ "NAME varchar(100) DEFAULT NULL COMMENT "名称","
					+ "PINYIN varchar(100) DEFAULT NULL COMMENT "拼音","
					+ "PARENT_ID varchar(32) DEFAULT NULL COMMENT "上级行政区划数字代码","
					+ "IS_DISPLAY int(1) DEFAULT NULL COMMENT "是否显示( 0:否 1:是 )","
					+ "SORT bigint(20) DEFAULT NULL COMMENT "排序标识","
					+ "DEL_FLAG int(1) DEFAULT NULL COMMENT "删除标识(0:正常 1:已删除)","
					+ "PRIMARY KEY (ID)"
					+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="行政区划 (省市区)";"
					);
		}
		// 释放资源
		stat.close();
        conn.close();
	}
}

注: 上記のテーブル作成ロジックは、まず作成するテーブルがデータベースに存在するかどうかを判断し、存在する場合は何も操作せずに戻ります。作成するテーブルがデータベースに存在しない場合は、新しいテーブルが作成されます。特定のロジックは、独自のニーズに応じて定義できます。

テーブルがデータベースに存在するかどうかを判断するための判定操作を削除します。また、コメントアウトされた「テーブルが存在する場合は、最初にテーブルを削除してからテーブルを作成します(これにより、データベース内のデータが削除されます)」を使用することもできます。元のテーブル)。

4. 実行して結果を表示します

プロジェクトで Application.java クラスを見つけてクラスを実行し、操作が完了したら、ナビゲートを開いて独自のデータベースを表示し、データベースが作成されました。テーブル「sys_admin_divisions」とテーブル内の関連フィールド。

以上がSpringBoot でデータベース テーブルを自動的に作成する Java を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。