springBoot下實現java自動創建數據庫表
SpringBoot環境啟動項目創建數據庫表
使用環境
windows+eclipse+mysql+navicat
步驟
1.創建SpringBoot項目
2.新建數據庫,配置連接信息
3.編寫初始化數據庫表類
4.運行查看結果
1.創建SpringBoot項目
關於如何創建SpringBoot項目不再詳細描述,隻要創建一個可以運行的SpringBoot項目就行。
2.新建數據庫,配置連接信息
2.1 新建數據庫
打開Navicat新建一個Mysql連接(連接信息如用戶名,密碼記好,下面配置連接信息要用),建立好連接後新建一個數據庫,設置數據庫名稱為”nfsj”,這個根據自己喜好設置,記得在下面配置信息修改就行。
2.2 配置連接信息
項目中找到如下圖文件,打開文件添加配置:
打開上述文件,添加如下代碼:
# 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下新建一個包,報名任意,在包下新建一個類,類名稱為”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類,運行該類,等運行完畢後再打開navicate查看自己的數據庫,發現數據庫中已經創建好瞭一個表為”sys_admin_divisions”的表和表中的相關字段。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Spring Boot 2.5.0 重新設計的spring.sql.init 配置有啥用
- JavaWeb倉庫管理系統詳解
- springboot 整合druid及配置依賴
- MySQL長字符截斷的實現示例
- SpringBoot 如何使用Dataway配置數據查詢接口