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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。