Java中嵌入式MySQL的使用方法
这篇文件主要介绍在Java中嵌入式MySQL的使用,对于一些的应用项目,提供安装版的Mysql,Oracle是必须的工作。但是有时候如果是一个小的工具,可安装或者移植性比较强的小软件。再去安装数据库可能就比较麻烦了。
其实MySQL也有嵌入式的,不需要安装,在使用的过程中,会自动创建数据库以及通过代码的方式启动或者关闭。下面提供一些代码片段,具体的会提供下载地址。
这个是核心代码类,这个类实现了Mysql的启动和停止以及数据库的启动状态。
packagenet.simple.mysql; importjava.io.File; importjava.util.HashMap; importjava.util.Map; importjava.util.Properties; importjava.util.Set; importcom.mysql.management.MysqldResource; /** * *@author李岩飞 *@emaileliyanfei@126.com *2016年11月2日下午1:44:55 * */ publicfinalclassEmbedMySqlServer{ privateMysqldResourcemysqlInstance; //配置信息 publicfinalPropertiesprops; //端口信息 privateStringport; /** *考虑到数据库的性能问题,允许将数据库放在其它磁盘 */ privateStringembedMySqlHome; publicEmbedMySqlServer(finalPropertiesprops){ this.props=props; } publicEmbedMySqlServer(finalPropertiesprops,StringembedMySqlHome){ this.embedMySqlHome=embedMySqlHome; this.props=props; } publicfinalStringgetEmbedMySqlHome(){ returnnull==embedMySqlHome?getPlatformBaseDir():embedMySqlHome; } /** *获得当前应用主目录 *@return当前应用启动程序所在目录. */ publicstaticStringgetPlatformBaseDir(){ returnSystem.getProperty("user.dir"); } publicstaticbooleanisBlank(finalStringstr){ intstrLen; if(str==null||(strLen=str.length())==0){ returntrue; } for(inti=0;i<strLen;i++){ if(Character.isWhitespace(str.charAt(i))==false){ returnfalse; } } returntrue; } publicvoidstartup(){ finalFilebaseDir=newFile(getEmbedMySqlHome(),"mysql-em"); mysqlInstance=newMysqldResource(baseDir); port=props.getProperty("port"); if(isBlank(port)) props.put("port",port=String.valueOf((int)(Math.random()*40000))); finalSet<Object>keys=props.keySet(); finalMap<String,String>options=newHashMap<String,String>(keys.size()); for(finalObjectkey:keys){ finalStringval=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")); } publicStringgetPort(){ returnport; } /** *判断mysql是否正在运行 */ publicbooleanisRunning(){ returnnull==mysqlInstance?false:mysqlInstance.isRunning(); } publicvoidshutdown(){ if(mysqlInstance!=null) mysqlInstance.shutdown(); } publicvoidcleanup(){ if(mysqlInstance!=null) mysqlInstance.cleanup(); } }
下面这个是启动Demo,
publicstaticvoidmain(String[]args){ try{ Propertiespro=newProperties(); //根据机器配置,设置不同的参数 pro.load(MysqlTest.class.getResourceAsStream("MySql_medium.properties")); newEmbedMySqlServer(pro).startup(); //可以把数据库放到其他磁盘 //newEmbedMySqlServer(pro,"f:\\").startup(); Connectionconn=getTestConnection(); System.out.println(conn.isClosed()); conn.close(); }catch(Exceptione){ e.printStackTrace(); } }
MySql_general.properties一般机器的配置样例
MySql_medium.properties中等机器的配置样例
MySql_large.properties高配机的配置样例
具体的参数可以根据不同需求进行定义,比如端口可以自由定义。
需要引用的mysql两个jar,mysql-connector-mxj-gpl-6-0-11-db-files.jar,mysql-connector-mxj-gpl-6-0-11.jar
代码在Git上,地址是:https://git.oschina.net/eliyanfei/api_tools.git
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。