欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Java實(shí)現(xiàn)動態(tài)生成MySQL數(shù)據(jù)庫

 更新時(shí)間:2024年02月18日 08:17:39   作者:哪里的破水瓶  
這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)動態(tài)生成MySQL數(shù)據(jù)庫,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

Java 動態(tài)生成 MYsql 數(shù)據(jù)庫

首先準(zhǔn)備一個類,表示用于生成數(shù)據(jù)庫等操作。

/*
  TenantDatabaseDTO 用于傳遞租戶數(shù)據(jù)庫相關(guān)的信息。
 */
public class TenantDatabaseDTO {
    // 數(shù)據(jù)庫名稱
    private String tenantDatabase;
    // 數(shù)據(jù)庫用戶
    private String dbUser;
    // 數(shù)據(jù)庫密碼
    private String dbPass;
    // 管理員名稱
    private String adminName;
    // 管理員密碼
    private String adminPass;
    // 名稱
    private String tenantName;
    // 數(shù)據(jù)庫連接 URL
    private String url;
}

接下來我們開始連接數(shù)據(jù)庫操作

我們首先創(chuàng)建數(shù)據(jù)庫連接,Statement 是執(zhí)行語句對象,用于執(zhí)行 sql,Connection 是連接對象,可以通過 setAutoCommit 開啟一個事務(wù),也就是不會自動提交。

// url
String url = "jdbc:mysql://" + host + ":" + port + "/";

// 數(shù)據(jù)庫賬戶密碼
String username = "root";
String password = "1234";

// 獲取數(shù)據(jù)庫連接
Connection conn = DriverManager.getConnection(url, username, password);
// 執(zhí)行語句對象
Statement stmt = null;
// 關(guān)閉自動提交事務(wù)
conn.setAutoCommit(false);
// 創(chuàng)建執(zhí)行語句對象
stmt = conn.createStatement();

創(chuàng)建數(shù)據(jù)庫

我們拼接一個 SQL 用于創(chuàng)建一個數(shù)據(jù)庫,通過執(zhí)行語句的 execute 方法執(zhí)行,由于我們開啟了事務(wù),最后提交事務(wù)才能完成創(chuàng)建。

// 數(shù)據(jù)庫名稱
String database = "newDataBase";
// 創(chuàng)建庫
String createDatabaseSQL = "CREATE DATABASE IF NOT EXISTS `" + database + "` DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;";
// 執(zhí)行語句
stmt.execute(createDatabaseSQL);

這里由于我的業(yè)務(wù)需要給特定的數(shù)據(jù)庫做專門的賬戶密碼,所以下面需要再次執(zhí)行兩個,創(chuàng)建用戶以及分配該數(shù)據(jù)的權(quán)限

String databasePassword = "1234";
// 在這里要創(chuàng)建用戶,并且存入相應(yīng)用戶和密碼
String userSQL = "CREATE USER '" + database + "'@'localhost' IDENTIFIED BY '" + databasePassword + "';";
stmt.execute(userSQL);

//用戶授權(quán)
String grantSQL = "GRANT select, insert, update, delete ON " + database + ".* TO '" + database + "'@'localhost'";
stmt.execute(grantSQL);

切換到剛剛的數(shù)據(jù)庫

// 切換到數(shù)據(jù)庫
conn.setCatalog(tenantDatabase);

執(zhí)行 SQL 腳本

ScriptRunner 類用于執(zhí)行SQL腳本,需要和數(shù)據(jù)庫連接 Connection 一起使用。因?yàn)樾枰獋鬟f連接器。

ScriptRunner runner = new ScriptRunner(connection);
// 禁用一般日志
runner.setLogWriter(null);
// 禁用錯誤日志
runner.setErrorLogWriter(null);
// 從資源中獲取 SQL 腳本的 Reader,位于 resources 目錄下 init-sql-script下的文件,讀取之后并執(zhí)行。
Reader reader = Resources.getResourceAsReader("init-sql-script/erp-crm-tenant-sample.sql");
// 最后記得將事務(wù)提交
conn.commit();

小技巧

這樣也可以更好的提交數(shù)據(jù)。

SqlRunner sqlRunner = new SqlRunner(conn);
//插入部門
String insertSql = "INSERT INTO sys_dept VALUES (100, 0, '0', '" + tenantDatabaseDTO.getTenantName() + "', 0, '" + tenantDatabaseDTO.getTenantName() + "', '00000000000', 'admin@admin.com', '0', '0', 'admin', '" + DateUtils.getTime() + "', 'admin', '" + DateUtils.getTime() + "');";
sqlRunner.run(insertSql);

到此這篇關(guān)于使用Java實(shí)現(xiàn)動態(tài)生成MySQL數(shù)據(jù)庫的文章就介紹到這了,更多相關(guān)Java生成MySQL數(shù)據(jù)庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mybatis水平分表實(shí)現(xiàn)動態(tài)表名的項(xiàng)目實(shí)例

    mybatis水平分表實(shí)現(xiàn)動態(tài)表名的項(xiàng)目實(shí)例

    本文主要介紹了mybatis水平分表實(shí)現(xiàn)動態(tài)表名的項(xiàng)目實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java實(shí)現(xiàn)拆箱和裝箱的原理解析

    Java實(shí)現(xiàn)拆箱和裝箱的原理解析

    Java 是一種強(qiáng)類型語言,然而在 Java中Integer類型和 int類型兩種不同類型的數(shù)字卻能正常地進(jìn)行數(shù)學(xué)運(yùn)算,為什么?今天我們就來聊聊其背后的秘密:拆箱和裝箱,感興趣的小伙伴跟著小編一起來看看吧
    2024-05-05
  • mybatis?獲取更新(update)記錄的id之<selectKey>用法說明

    mybatis?獲取更新(update)記錄的id之<selectKey>用法說明

    這篇文章主要介紹了mybatis?獲取更新(update)記錄的id之<selectKey>用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Dubbo+zookeeper搭配分布式服務(wù)的過程詳解

    Dubbo+zookeeper搭配分布式服務(wù)的過程詳解

    Dubbo作為分布式架構(gòu)比較后的框架,同時(shí)也是比較容易入手的框架,適合作為分布式的入手框架,下面是簡單的搭建過程,對Dubbo+zookeeper分布式服務(wù)搭建過程感興趣的朋友一起看看吧
    2022-04-04
  • java基礎(chǔ)的詳細(xì)了解第二天

    java基礎(chǔ)的詳細(xì)了解第二天

    這篇文章對Java編程語言的基礎(chǔ)知識作了一個較為全面的匯總,在這里給大家分享一下。需要的朋友可以參考,希望能給你帶來幫助
    2021-08-08
  • 第一次使用Android Studio時(shí)你應(yīng)該知道的一切配置(推薦)

    第一次使用Android Studio時(shí)你應(yīng)該知道的一切配置(推薦)

    這篇文章主要介紹了第一次使用Android Studio時(shí)你應(yīng)該知道的一切配置(推薦) ,需要的朋友可以參考下
    2017-09-09
  • 解決Spring中@Value注解取值為null問題

    解決Spring中@Value注解取值為null問題

    近期應(yīng)用中因業(yè)務(wù)迭代需要接入 user 客戶端,接入后總是啟動失敗,報(bào)注冊 user bean 依賴的配置屬性為 null,所以接下來小編就和大家一起排查分析這個問題,感興趣的小伙伴跟著小編一起來看看吧
    2023-08-08
  • MyBatisPlus PaginationInterceptor分頁插件的使用詳解

    MyBatisPlus PaginationInterceptor分頁插件的使用詳解

    這篇文章主要介紹了MyBatisPlus PaginationInterceptor分頁插件的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Spring?Boot?如何正確讀取配置文件屬性

    Spring?Boot?如何正確讀取配置文件屬性

    這篇文章主要介紹了Spring?Boot?如何正確讀取配置文件屬性,項(xiàng)目中經(jīng)常會經(jīng)常讀取配置文件中的屬性的值,Spring?Boot提供了很多注解讀取配置文件屬性,那么如何正確使用呢,下文一起來參考下面文章內(nèi)容吧
    2022-04-04
  • springmvc Rest風(fēng)格介紹及實(shí)現(xiàn)代碼示例

    springmvc Rest風(fēng)格介紹及實(shí)現(xiàn)代碼示例

    這篇文章主要介紹了springmvc Rest風(fēng)格介紹及實(shí)現(xiàn)代碼示例,rest風(fēng)格簡潔,分享了HiddenHttpMethodFilter 的源碼,通過Spring4.0實(shí)現(xiàn)rest風(fēng)格源碼及簡單錯誤分析,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11

最新評論