Java中嵌入式MySQL的使用方法

这篇文件主要介绍在Java中嵌入式MySQL的使用,对于一些的应用项目,提供安装版的Mysql,Oracle是必须的工作。但是有时候如果是一个小的工具,可安装或者移植性比较强的小软件。再去安装数据库可能就比较麻烦了。

其实MySQL也有嵌入式的,不需要安装,在使用的过程中,会自动创建数据库以及通过代码的方式启动或者关闭。下面提供一些代码片段,具体的会提供下载地址。

这个是核心代码类,这个类实现了Mysql 的启动和停止以及数据库的启动状态。

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;
 /**
 * 考虑到数据库的性能问题,允许将数据库放在其它磁盘
 */
 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;
 }

 /**
 * 获得当前应用主目录
 * @return 当前应用启动程序所在目录.
 */
 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是否正在运行
 */
 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();
 }
}

下面这个是启动Demo,

public static void main(String[] args) {
 try {
  Properties pro = new Properties();
  //根据机器配置,设置不同的参数
  pro.load(MysqlTest.class.getResourceAsStream("MySql_medium.properties"));
  new EmbedMySqlServer(pro).startup();
  //可以把数据库放到其他磁盘
  //new EmbedMySqlServer(pro,"f:\\").startup();
  Connection conn = getTestConnection();
  System.out.println(conn.isClosed());
  conn.close();
 } catch (Exception e) {
  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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java+MyBatis+MySQL开发环境搭建流程详解

    主要搭建过程 1. pom.xml文件中加入mybatis和数据库依赖,这里使用mysql: <properties> <mybatis.version>3.2.3</mybatis.version> <mysql.version>5.1.26</mysql.version> <slf4j.api.version>1.7.5</slf4j.api.version> <testng.version>6.8.7&l

  • Java数据库连接池的几种配置方法(以MySQL数据库为例)

    一.Tomcat配置数据源: 前提:需要将连接MySQL数据库驱动jar包放进Tomcat安装目录中common文件夹下的lib目录中 1.方法一:在WebRoot下面建文件夹META-INF,里面建一个文件context.xml,如下: <?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jdbc/chaoshi" auth="

  • 利用Java的MyBatis框架获取MySQL中插入记录时的自增主键

    第一步: 在Mybatis Mapper文件中添加属性"useGeneratedKeys"和"keyProperty",其中keyProperty是Java对象的属性名! <insert id="insert" parameterType="Spares" useGeneratedKeys="true" keyProperty="id"> insert into spares

  • Java数据类型与MySql数据类型对照表

    本文讲述了Java数据类型与MySql数据类型对照表.分享给大家供大家参考,具体如下: 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) VARCHAR L+N VARCHAR java.lang.String 12 CHAR N CHAR java.lang.String 1 BLOB L+N BLOB java.lang.byte[] -4 TEXT 65535 VARCHAR java.lang.String -1 INTEGER 4 INTEGER UNSIGNE

  • 实例讲解Java的MyBatis框架对MySQL中数据的关联查询

    mybatis 提供了高级的关联查询功能,可以很方便地将数据库获取的结果集映射到定义的Java Bean 中.下面通过一个实例,来展示一下Mybatis对于常见的一对多和多对一关系复杂映射是怎样处理的. 设计一个简单的博客系统,一个用户可以开多个博客,在博客中可以发表文章,允许发表评论,可以为文章加标签.博客系统主要有以下几张表构成: Author表:作者信息表,记录作者的信息,用户名和密码,邮箱等. Blog表   :  博客表,一个作者可以开多个博客,即Author和Blog的关系是一对多.

  • Mysql存储java对象实例详解

    Mysql存储java对象 MySQL  设置字段为 blob 保存对象,先将对象序列化为byte[]  使用 setObject(byte[] bytes) ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream out = null; try { out = new ObjectOutputStream(baos); out.writeObject(java实例对象); } catch (IOE

  • java实现连接mysql数据库单元测试查询数据的实例代码

    1.按照javaweb项目的要求逐步建立搭建起机构,具体的类包有:model .db.dao.test; 具体的架构详见下图: 2.根据搭建的项目架构新建数据库test和数据库表t_userinfo并且添加对应的测试数据; (这里我使用的是绿色版的数据库,具体的下载地址:http://pan.baidu.com/s/1mg88YAc) 具体的建立数据库操作详见下图: 3.编写包中的各种类代码,具体参考代码如下: UserInfo.java /** * FileName: UserInfo.jav

  • Java+Mysql学生管理系统源码

    最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事.闲来无事,也就自己写了一个,不过功能实现的不是很多. 开发语言:java: 开发环境:Mysql, java: 开发工具:eclipse 开发此案例,首先得在电脑上有java开发环境和Mysql, java开发环境与Mysql的搭建,就不再叙述了,如果需要,请联系我最下面的联系方式:dingyelf@aliyun.com 此次系统比较简易:数据库中只有一个表:stu;功能:能够对学生增加.删除.修改. 开发步骤:  

  • Java mysql数据库并进行内容查询实例代码

    Java  mysql数据库并进行内容查询 最近用框架做了几个项目,感觉当初底层的东西有点忘了,写一个JDBC的简单的连接代码来熟悉回顾一下,也希望对刚接触的新手能有所帮助.这也是我的第一篇随笔,废话不多说,直接上代码: public Connection getCon() { //数据库连接名称 String username="root"; //数据库连接密码 String password=""; String driver="com.mysql.j

  • java jdbc连接mysql数据库实现增删改查操作

    jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比较成熟的框架,例如Hibernate.Mybatis. 但是作为这些成熟框架的底层的jdbc却也是我们应该去掌握的,只有了解了jdbc的增删改查,这样在以后如果有兴趣去研究Hibernate或者Mybatis的源代码的时候才能更好的去理解这些成熟的框架是如何去实现增删改查

  • Java连接mysql数据库并进行内容查询的方法

    最近用框架做了几个项目,感觉当初底层的东西有点忘了,写一个JDBC的简单的连接代码来熟悉回顾一下,也希望对刚接触的新手能有所帮助.这也是我的第一篇随笔,废话不多说,直接上代码: public Connection getCon() { //数据库连接名称 String username="root"; //数据库连接密码 String password=""; String driver="com.mysql.jdbc.Driver"; //其中

随机推荐