springboot集成h2

h2数据库是常用的开源数据库,与HSQLDB类似,十分适合作为嵌入式数据库使用,其他的数据库大部分都需要安装独立的客户端和服务器端
 h2的优势
  (1)h2采用纯java编写,因此不受平台的限制
  (2)h2只有一个jar文件,十分适合作为嵌入式数据库使用
  (3)h2提供了一个十分方便的web控制台用于操作和管理数据库内容。

下面介绍下h2数据库的简单使用

1.添加依赖

  创建项目的时候,在数据库选项里直接勾选h2选项,如果是二次项目,在pom文件里添加以下依赖

<dependency>
   <groupId>com.h2database</groupId>
   <artifactId>h2</artifactId>
   <scope>runtime</scope>
</dependency>

2.连接配置

在 application.properties 文件(或者 applocation.yml 文件)对数据库进行连接配置

1 spring.datasource.url = jdbc:h2:file:~/.h2/testdb //配置h2数据库连接地址
2 spring.datasource.driverClassName =org.h2.Driver //配置JDBC Driver
3 spring.datasource.username = sa //配置数据库用户名
4 spring.datasource.password = //配置数据库密码

  完成依赖配置和连接配置以后,就可以在项目里使用h2数据库了,Spring会自动完成Datasource的注入,之后无论是用jpa还是mybatis都可以

3.数据初始化配置

如果需要在程序启动时对数据库进行初始化操作,在 application.peoperties 或yml文件里对数据库进行配置

1 spring.datasource.schema=classpath:db/schema.sql   //进行该配置后,每次启动程序,程序都会运行
2 resources/db/schema.sql                            //sql文件,对数据库的结构进行操作。xml文件也行
3 spring.datasource.data=classpath:db/data.sql       //进行该配置后,每次启动程序,程序都会运行
4 resources/db/data.sql                              //sql文件,对数据库的数据操作。xml文件也行

这个配置十分适合开发环境,最好把数据库结构的构建sql放在 resources/db/schema.sql ,数据sql放在 resources/db/data.sql 中,这样每次
重启项目都可以得到一个新的数据库,这样就不需要每次为了测试而修改数据中的内容了。

4.h2 web consloe

  h2 web consloe是一个数据库GUI管理应用,和phpMyAdmin类似,程序运行时,会自动启动h2 web consloe,当然也可以进行如下的配置:

1 spring.h2.console.settings.web-allow-others=true        //进行该配置后,h2 web consloe就可以在远程访问了。否则只能在本机访问。
2 spring.h2.console.path=/h2-console                      //进行该配置,你就可以通过YOUR_URL/h2-console访问h2 web consloe。YOUR_URL是你程序的访问URl。
3 spring.h2.console.enabled=true                   //进行该配置,程序开启时就会启动h2 web consloe。当然这是默认的,如果你不想在启动程序时启动h2 web consloe,那么就设置为false。

配置以后,在浏览器输入 http://localhost:8080/h2-console  然后输入用户名和密码,选择好合适的语言,就可以进入数据库管理应用啦

5.实例

  在resource文件下新建包 changelog ,包里包含三个xml文件: changelog.xml ,  data.xml  , init.xml 
   其中 changelog.xml 写的是数据库表的结构 , data.xml 文件里写的是数据库表的初始化数据  init.xml 是初始化加载的xml文件,包含前两个xml文件的路径

init.xml 文件:

1 <?xml version="1.0" encoding="utf-8"?>
2 <databaseChangeLog
3         xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
4         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5         xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd">
6     <include file="changeLog.xml" relativeToChangelogFile="true"/>
7     <include file="data.xml" relativeToChangelogFile="true"/>
8 </databaseChangeLog>

changelog.xml 文件:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <databaseChangeLog
 3         xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
 4         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5         xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
 6         http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd">
 7
 8     <property name="autoIncrement" value="true" dbms="h2"/>
 9     <changeSet id="init-schema" author="jinzhe"  >
10         <comment>init schema</comment>
11
12         <createTable tableName="user">
13             <column name="id" type="bigint" autoIncrement="${autoIncrement}">
14                 <constraints primaryKey="true" nullable="false"/>
15             </column>
16             <column name="username" type="varchar(20)" >
17                 <constraints  nullable="false" uniqueConstraintName="username"/>
18             </column>
19             <column name="password" type="varchar(20)">
20                 <constraints  nullable="false"/>
21             </column>
22             <column name="email" type="varchar(20)">
23                 <constraints  nullable="false"/>
24             </column>
25             <column name="phone" type="varchar(11)">
26                 <constraints  nullable="false"/>
27             </column>
28             <column name="sex" type="varchar(2)">
29                 <constraints  nullable="false"/>
30             </column>
31             <column name="creat_time" type="java.util.Date">
32                 <constraints  nullable="false"/>
33             </column>
34             <column name="update_time" type="java.util.Date">
35                 <constraints  nullable="false"/>
36             </column>
37         </createTable>
38     </changeSet>
39 </databaseChangeLog>

data.xml 文件:

 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 2 <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
 3                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4                    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
 5
 6     <changeSet id="001" author="jin">
 7
 8         <insert tableName="user" schemaName="public" >
 9             <column name="id" value="1"></column>
10             <column name="username" value="admin123"></column>
11             <column name="password" value="123456"></column>
12             <column name="email" value="[email protected]"></column>
13             <column name="phone" value="15330774444"></column>
14             <column name="sex" value="男"></column>
15             <column name="creat_time" value="2017-12-01 00:00:00"></column>
16             <column name="update_time" value="2017-12-01 00:00:00"></column>
17         </insert>
18
19     </changeSet>
20
21 </databaseChangeLog>

原文地址:https://www.cnblogs.com/jin-zhe/p/8203347.html

时间: 2024-11-08 20:48:54

springboot集成h2的相关文章

idea 中 springBoot 集成 h2 轻量级内存数据库

配置文件 #h2 数据库配置 #配置数据库连接地址spring.datasource.url=jdbc:h2:sunniwell:sos#配置数据库驱动spring.datasource.driver-class-name=org.h2.Driver#配置数据库用户名spring.datasource.username=root#配置数据库密码spring.datasource.password=sunniwell#配置能远程访问spring.h2.console.settings.web-al

springboot集成websocket的两种实现方式

WebSocket跟常规的http协议的区别和优缺点这里大概描述一下 一.websocket与http http协议是用在应用层的协议,他是基于tcp协议的,http协议建立链接也必须要有三次握手才能发送信息.http链接分为短链接,长链接,短链接是每次请求都要三次握手才能发送自己的信息.即每一个request对应一个response.长链接是在一定的期限内保持链接.保持TCP连接不断开.客户端与服务器通信,必须要有客户端发起然后服务器返回结果.客户端是主动的,服务器是被动的. WebSocke

SpringBoot集成MyBatis的分页插件PageHelper

俗话说:好??不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper. 昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心得和源码,主要就算是敲了一下SpringBoot的门儿,希望能给各位的入门带给一点儿捷径,今天给各位温习一下MyBatis的分页插件PageHelper和SpringBoot的集成,它的使用也非常简单,开发更为高效.因为PageHelper插件是属于MyBatis框架的,所以相信很多哥们儿都已经用

springboot集成swagger2构建RESTful API文档

在开发过程中,有时候我们需要不停的测试接口,自测,或者交由测试测试接口,我们需要构建一个文档,都是单独写,太麻烦了,现在使用springboot集成swagger2来构建RESTful API文档,可以在访问接口上,直接添加注释 先介绍一下开发环境: jdk版本是1.8 springboot的版本是1.4.1 开发工具为 intellij idea 我们先引入swagger2的jar包,pom文件引入依赖如下: <dependency> <groupId>io.springfox&

spring-boot集成Springfox-Swagger2

import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documenta

【spring-boot】spring-boot集成ehcache实现缓存机制

EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. ehcache提供了多种缓存策略,主要分为内存和磁盘两级,所以无需担心容量问题. spring-boot是一个快速的集成框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 由于spring-boot无需任何样板化的配置文件,所以spring-boot集成一些其他框架时会有略微的

SpringBoot集成MyBatis的分页插件PageHelper(回头草)

俗话说:好??不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper. 昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心得和源码,主要就算是敲了一下SpringBoot的门儿,希望能给各位的入门带给一点儿捷径,今天给各位温习一下MyBatis的分页插件PageHelper和SpringBoot的集成,它的使用也非常简单,开发更为高效.因为PageHelper插件是属于MyBatis框架的,所以相信很多哥们儿都已经用

springboot集成redis详解

欢迎扫码加入Java高知群交流 springboot集成redis非常简单 1.引入maven依赖redis包 <!-- springboot整合 redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency> 2.appli

springboot集成jsp

springboot集成jsp需要的依赖如下: <!--配置servlet--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> </dependency> <!--配置jsp jstl的支持--> <dependency> <groupId>javax.se