溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java中怎么嵌入MySQL

發(fā)布時(shí)間:2021-07-23 16:47:28 來源:億速云 閱讀:121 作者:Leah 欄目:編程語言

這篇文章給大家介紹Java中怎么嵌入MySQL,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

其實(shí)MySQL也有嵌入式的,不需要安裝,在使用的過程中,會(huì)自動(dòng)創(chuàng)建數(shù)據(jù)庫以及通過代碼的方式啟動(dòng)或者關(guān)閉。下面提供一些代碼片段,具體的會(huì)提供下載地址。

這個(gè)是核心代碼類,這個(gè)類實(shí)現(xiàn)了Mysql 的啟動(dòng)和停止以及數(shù)據(jù)庫的啟動(dòng)狀態(tài)。

package net.simple.mysql;  import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.Properties; import java.util.Set;  import com.mysql.management.MysqldResource;  /**  *   * @author 李巖飛  * @email eliyanfei@126.com   * 2016年11月2日 下午1:44:55  *  */ public final class EmbedMySqlServer {     private MysqldResource mysqlInstance;     //配置信息     public final Properties props;     //端口信息     private String port;     /**      * 考慮到數(shù)據(jù)庫的性能問題,允許將數(shù)據(jù)庫放在其它磁盤      */     private String embedMySqlHome;      public EmbedMySqlServer(final Properties props) {         this.props = props;     }      public EmbedMySqlServer(final Properties props, String embedMySqlHome) {         this.embedMySqlHome = embedMySqlHome;         this.props = props;     }      public final String getEmbedMySqlHome() {         return null == embedMySqlHome ? getPlatformBaseDir() : embedMySqlHome;     }      /**     * 獲得當(dāng)前應(yīng)用主目錄     * @return 當(dāng)前應(yīng)用啟動(dòng)程序所在目錄.     */     public static String getPlatformBaseDir() {         return System.getProperty("user.dir");     }      public static boolean isBlank(final String str) {         int strLen;         if (str == null || (strLen = str.length()) == 0) {             return true;         }         for (int i = 0; i < strLen; i++) {             if (Character.isWhitespace(str.charAt(i)) == false) {                 return false;             }         }         return true;     }      public void startup() {         final File baseDir = new File(getEmbedMySqlHome(), "mysql-em");         mysqlInstance = new MysqldResource(baseDir);         port = props.getProperty("port");         if (isBlank(port))             props.put("port", port = String.valueOf((int) (Math.random() * 40000)));         final Set<Object> keys = props.keySet();         final Map<String, String> options = new HashMap<String, String>(keys.size());         for (final Object key : keys) {             final String val = props.getProperty(key.toString());             if ("".equals(val))                 options.put(key.toString(), null);             else                 options.put(key.toString(), val.replace("{$contextPath}", getPlatformBaseDir()));         }         if (!mysqlInstance.isRunning())             mysqlInstance.start("Em_MySQL", options, false, keys.contains("defaults-file"));     }      public String getPort() {         return port;     }      /**      * 判斷mysql是否正在運(yùn)行      */     public boolean isRunning() {         return null == mysqlInstance ? false : mysqlInstance.isRunning();     }      public void shutdown() {         if (mysqlInstance != null)             mysqlInstance.shutdown();     }      public void cleanup() {         if (mysqlInstance != null)             mysqlInstance.cleanup();     } }

下面這個(gè)是啟動(dòng)Demo,

public static void main(String[] args) {  try {  Properties pro = new Properties();  //根據(jù)機(jī)器配置,設(shè)置不同的參數(shù)  pro.load(MysqlTest.class.getResourceAsStream("MySql_medium.properties"));  new EmbedMySqlServer(pro).startup();  //可以把數(shù)據(jù)庫放到其他磁盤  //new EmbedMySqlServer(pro,"f:\\").startup();  Connection conn = getTestConnection();  System.out.println(conn.isClosed());  conn.close();  } catch (Exception e) {  e.printStackTrace();  }  }

MySql_general.properties一般機(jī)器的配置樣例

MySql_medium.properties中等機(jī)器的配置樣例

MySql_large.properties高配機(jī)的配置樣例

具體的參數(shù)可以根據(jù)不同需求進(jìn)行定義,比如端口可以自由定義。

需要引用的mysql兩個(gè)jar,mysql-connector-mxj-gpl-6-0-11-db-files.jar,mysql-connector-mxj-gpl-6-0-11.jar

關(guān)于Java中怎么嵌入MySQL就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI