当前位置:   article > 正文

springboot整合内置嵌入式mysql服务教程_springboot 内置mysql

springboot 内置mysql

教程

pom文件引入依赖

  1. <!-- 内嵌mysql server -->
  2. <dependency>
  3. <groupId>com.wix</groupId>
  4. <artifactId>wix-embedded-mysql</artifactId>
  5. <version>4.6.1</version>
  6. <scope>compile</scope>
  7. </dependency>

springboot项目整合EmbeddedMysql配置类

  1. import com.wix.mysql.EmbeddedMysql;
  2. import com.wix.mysql.ScriptResolver;
  3. import com.wix.mysql.config.MysqldConfig;
  4. import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
  5. import org.springframework.context.annotation.Configuration;
  6. import javax.annotation.PostConstruct;
  7. import javax.annotation.PreDestroy;
  8. import java.util.concurrent.TimeUnit;
  9. import static com.wix.mysql.EmbeddedMysql.anEmbeddedMysql;
  10. import static com.wix.mysql.config.Charset.UTF8;
  11. import static com.wix.mysql.config.MysqldConfig.aMysqldConfig;
  12. import static com.wix.mysql.distribution.Version.v5_6_23;
  13. @Configuration
  14. @ConditionalOnProperty(prefix = "cms",name = "embedded.mysql.enabled",havingValue = "true")
  15. public class EmbeddedMysqlConfig {
  16. private EmbeddedMysql mysql;
  17. @PostConstruct
  18. public void launchDb(){
  19. //mysql版本
  20. MysqldConfig config = aMysqldConfig(v5_6_23)
  21. .withCharset(UTF8)
  22. //端口号
  23. .withPort(3306)
  24. //用户名密码
  25. .withUser("tarzan", "123456")
  26. //时区
  27. .withTimeZone("Asia/Shanghai")
  28. //超时
  29. .withTimeout(1, TimeUnit.MINUTES)
  30. .withServerVariable("max_connect_errors", 666)
  31. .withTempDir("C:\\Users\\liuya\\Desktop\\data\\")
  32. .build();
  33. mysql = anEmbeddedMysql(config)
  34. //初始化数据表结构
  35. .addSchema("tarzan_cms", ScriptResolver.classPathScript("db/schema.sql"))
  36. .start();
  37. System.out.println(mysql.getConfig().toString());
  38. }
  39. @PreDestroy
  40. public void stopDb(){
  41. mysql.stop();
  42. }
  43. }

配置完,springboot项目启动时候,会先启动内置的mysql服务,spring配置文件配置数据库连接

  1. spring:
  2. datasource:
  3. type: com.alibaba.druid.pool.DruidDataSource
  4. driverClassName: com.mysql.cj.jdbc.Driver
  5. url: jdbc:mysql://localhost:3306/tarzan_cms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
  6. username: tarzan
  7. password: 123456

这样就省去了,安装mysql的步骤,不过目前这种配置方式,每次项目重启,会新建一个新的mysql服务,原来的数据会丢失。

详细大家可以参考EmbeddedMysql的GitHub源码。
GitHub - wix/wix-embedded-mysql: embedded mysql based on https://github.com/flapdoodle-oss/de.flapdoodle.embed.process

补充知识 

EmbeddedMysql是一个Java库,用于在本地开发和测试环境中嵌入式地启动和管理MySQL数据库实例。它允许开发者在应用程序中以编程方式控制MySQL服务器的启动、停止和配置,提供了便捷的方法来创建和销毁临时数据库实例。下面是对EmbeddedMysql的详细解释:

一、EmbeddedMysql概述:

  1. EmbeddedMysql:EmbeddedMysql是一个基于Java的开源库,用于在本地环境中嵌入式地启动和管理MySQL数据库实例。它可以以编程方式控制MySQL服务器的生命周期,并提供了一系列API来配置和操作数据库实例。

  2. 嵌入式数据库:EmbeddedMysql实现了将MySQL作为一个嵌入式数据库运行的功能。嵌入式数据库是直接嵌入到应用程序中的数据库,无需独立安装和配置,方便在本地开发和测试环境中使用。

  3. 版本支持:EmbeddedMysql支持多个MySQL版本,包括5.6、5.7和8.0等。开发者可以根据项目需要选择合适的MySQL版本进行使用。

二、EmbeddedMysql的主要功能:

  1. 启动和停止:EmbeddedMysql提供了启动和停止MySQL服务器的方法,可以方便地在应用程序中控制MySQL服务器的生命周期。

  2. 数据库配置:EmbeddedMysql允许开发者通过配置文件或编程方式来设置MySQL服务器的配置,包括端口号、数据库名称、用户权限等。

  3. 数据库初始化:EmbeddedMysql支持在启动MySQL服务器时自动执行SQL脚本,用于初始化数据库结构和数据。

  4. 数据库销毁:EmbeddedMysql提供了销毁数据库实例的方法,可以方便地清理临时数据库,防止数据残留。

  5. 数据库连接:EmbeddedMysql允许应用程序通过JDBC连接字符串连接到嵌入式数据库实例,并进行数据操作。

  6. 测试支持:EmbeddedMysql特别适合用于单元测试和集成测试。它可以在测试开始前启动数据库实例,在测试结束后停止数据库实例,从而实现独立的测试环境。

三、使用EmbeddedMysql的步骤:

  1. 引入依赖:首先,在项目的pom.xml文件中引入embedded-mysql依赖,以及相应的MySQL驱动库。

  2. 配置数据库:通过编程方式或配置文件设置MySQL服务器的配置,如端口号、数据库名称、用户名密码等。

  3. 启动数据库:使用EmbeddedMysql的API方法启动嵌入式MySQL服务器。

  4. 连接数据库:通过JDBC连接字符串连接到嵌入式数据库实例,使用JDBC API进行数据操作。

  5. 停止数据库:在测试或应用程序关闭时,调用EmbeddedMysql的API方法停止嵌入式MySQL服务器。

四、EmbeddedMysql的优势:

  1. 方便性:EmbeddedMysql使得在本地开发和测试环境中使用MySQL变得非常方便。无需手动安装和配置MySQL服务器,可以通过编程方式启动和停止数据库实例。

  2. 灵活性:EmbeddedMysql提供了丰富的API方法来控制MySQL服务器的配置和行为。开发者可以根据项目需要进行相应的配置和操作。

  3. 测试支持:EmbeddedMysql特别适合用于单元测试和集成测试,可以创建独立的测试环境,方便进行测试数据的初始化和清理。

  4. 版本支持:EmbeddedMysql支持多个MySQL版本,可以根据项目需求选择合适的MySQL版本使用。

五、注意事项:

  1. 资源占用:嵌入式数据库会占用一定的内存和CPU资源,需要根据系统配置和测试需求进行适量调整。

  2. 数据库初始化:在测试或应用程序启动时,需要确保数据库实例处于一个干净的状态,避免残留的测试数据影响结果。

  3. 版本兼容性:EmbeddedMysql的版本与项目所使用的MySQL版本要保持一致,并注意库文件的对应关系。

六、总结:

EmbeddedMysql是一个Java库,用于在本地开发和测试环境中嵌入式地启动和管理MySQL数据库实例。它提供了简便的API方法来控制MySQL服务器的启动、停止和配置,方便地创建和销毁临时数据库。EmbeddedMysql特别适用于单元测试和集成测试,可以快速创建独立的测试环境。通过引入依赖、配置数据库和使用EmbeddedMysql的API方法,可以轻松地在本地环境中使用嵌入式MySQL实例。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/518198
推荐阅读
相关标签
  

闽ICP备14008679号