如何实现H2数据库在Spring Boot中的应用与配置教程?

2026-05-16 05:261阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1200个文字,预计阅读时间需要5分钟。

如何实现H2数据库在Spring Boot中的应用与配置教程?

H2轻量级数据库,方便使用,可无需数据库服务器,直接嵌入到Java程序中。支持配置持久化,也可不持久化(数据在内存中)。

h2为轻量级数据库,使用特别方便,它可以不使用数据库服务器,直接嵌入到java程序中。可以配置持久化,同样也可以不持久化(数据在内存中)进程结束后,数据就释放,用做测试和演示特别方便。自带后台管理,非常方便,开源免费

  • 类库,使用maven简易安装
  • 可以同应用程序打包在一起发布
  • 可持久化,也可以直接基于内存不保留数据,适合于做单元测试

maven依赖

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> <version>1.4.193</version><!--低版本,支持访问内存数据库--> </dependency> <!-- mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> </dependencies>

application.yml配置

server: port: 8080 spring: datasource: driver-class-name: org.h2.Driver # schema: classpath:db/schema-h2.sql #初始化建表 # data: classpath:db/data-h2.sql #初始化数据 # url: jdbc:h2:mem:test #不持久化,放在内存中 url: jdbc:h2:~/test username: root password: test h2: console: path: /h2-console enabled: true #必须配置,不然无法访问

  • 配置中提供了初始化数据库语句schema: classpath:db/schema-h2.sql
  • 配置中提供数据初始化语句data: classpath:db/data-h2.sql
  • 当然你也可以不初始化数据和表,在程序启动后,可以通过 localhost:8080/h2-console访问数据库管理后台。通过后台操作h2数据库
  • 持久化与否url: jdbc:h2:mem:test代表数据放置于内存中,这种适合做单元测试,一次性使用
  • url: jdbc:h2:~/test 代表数据存放于 家目录/test

启动Springboot应用类,访问localhost:8080/h2-console就可以使用数据库管理后台了

如何实现H2数据库在Spring Boot中的应用与配置教程?

测试查询功能

完整代码参考:gitee.com/haimama/java-study/tree/master/h2db-demo-simple

Application.java

package demosimple.h2; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan("demosimple.h2.mapper") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class,args); } }

TestController.java

package demosimple.h2.controller; import demosimple.h2.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { @Autowired UserMapper userMapper; @GetMapping("/test") public Object test(){ return userMapper.getById(1L); } }

UserMapper.java

package demosimple.h2.mapper; import demosimple.h2.pojo.User; import org.apache.ibatis.annotations.Select; public interface UserMapper { @Select("select * from user where id=#{id}") public User getById(Long id); }

User.java

package demosimple.h2.pojo; import lombok.Data; @Data public class User { private Long id; private String name; private Integer age; private String email; }

访问localhost:8080/test

返回结果{"id":1,"name":"Jone","age":18,"email":"test1@baomidou.com"}

问题收集

jdbc链接

控制台默认链接是jdbc:h2:~/test,如果我们使用的是内存jdbc:h2:mem:test,需要将链接改为jdbc:h2:mem:test

内存链接报错

当我们使用jdbc:h2:mem:test链接时,报如下错误

Database "mem:test" not found, and IFEXISTS=true, so we cant auto-create it [90146-199] 90146/90146 (Help)

这句话的意思是说数据库未找到。经查询,高版本的h2不再允许远程访问内存数据库,可以将maven依赖添加一个低版本的

<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> <version>1.4.193</version> <!--低版本,支持访问内存数据库--> </dependency>

初始化sql执行

  • 如果持久化到文件,也就是url: jdbc:h2:~/test,当应用再次启动时,初始化的sql不会再执行,并且操作后新增减的数据状态将一直保存
  • 如果数据库选择的是url: jdbc:h2:mem:test,每次启动时,数据都会重新初始化
  • 这里再补充一点儿前提,只有maven配置了 mybatis-spring-boot-starter 时,初始化的sql才会执行

到此这篇关于h2database在springboot中的使用教程的文章就介绍到这了,更多相关springboot使用h2database内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

标签:使用

本文共计1200个文字,预计阅读时间需要5分钟。

如何实现H2数据库在Spring Boot中的应用与配置教程?

H2轻量级数据库,方便使用,可无需数据库服务器,直接嵌入到Java程序中。支持配置持久化,也可不持久化(数据在内存中)。

h2为轻量级数据库,使用特别方便,它可以不使用数据库服务器,直接嵌入到java程序中。可以配置持久化,同样也可以不持久化(数据在内存中)进程结束后,数据就释放,用做测试和演示特别方便。自带后台管理,非常方便,开源免费

  • 类库,使用maven简易安装
  • 可以同应用程序打包在一起发布
  • 可持久化,也可以直接基于内存不保留数据,适合于做单元测试

maven依赖

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> <version>1.4.193</version><!--低版本,支持访问内存数据库--> </dependency> <!-- mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> </dependencies>

application.yml配置

server: port: 8080 spring: datasource: driver-class-name: org.h2.Driver # schema: classpath:db/schema-h2.sql #初始化建表 # data: classpath:db/data-h2.sql #初始化数据 # url: jdbc:h2:mem:test #不持久化,放在内存中 url: jdbc:h2:~/test username: root password: test h2: console: path: /h2-console enabled: true #必须配置,不然无法访问

  • 配置中提供了初始化数据库语句schema: classpath:db/schema-h2.sql
  • 配置中提供数据初始化语句data: classpath:db/data-h2.sql
  • 当然你也可以不初始化数据和表,在程序启动后,可以通过 localhost:8080/h2-console访问数据库管理后台。通过后台操作h2数据库
  • 持久化与否url: jdbc:h2:mem:test代表数据放置于内存中,这种适合做单元测试,一次性使用
  • url: jdbc:h2:~/test 代表数据存放于 家目录/test

启动Springboot应用类,访问localhost:8080/h2-console就可以使用数据库管理后台了

如何实现H2数据库在Spring Boot中的应用与配置教程?

测试查询功能

完整代码参考:gitee.com/haimama/java-study/tree/master/h2db-demo-simple

Application.java

package demosimple.h2; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan("demosimple.h2.mapper") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class,args); } }

TestController.java

package demosimple.h2.controller; import demosimple.h2.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { @Autowired UserMapper userMapper; @GetMapping("/test") public Object test(){ return userMapper.getById(1L); } }

UserMapper.java

package demosimple.h2.mapper; import demosimple.h2.pojo.User; import org.apache.ibatis.annotations.Select; public interface UserMapper { @Select("select * from user where id=#{id}") public User getById(Long id); }

User.java

package demosimple.h2.pojo; import lombok.Data; @Data public class User { private Long id; private String name; private Integer age; private String email; }

访问localhost:8080/test

返回结果{"id":1,"name":"Jone","age":18,"email":"test1@baomidou.com"}

问题收集

jdbc链接

控制台默认链接是jdbc:h2:~/test,如果我们使用的是内存jdbc:h2:mem:test,需要将链接改为jdbc:h2:mem:test

内存链接报错

当我们使用jdbc:h2:mem:test链接时,报如下错误

Database "mem:test" not found, and IFEXISTS=true, so we cant auto-create it [90146-199] 90146/90146 (Help)

这句话的意思是说数据库未找到。经查询,高版本的h2不再允许远程访问内存数据库,可以将maven依赖添加一个低版本的

<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> <version>1.4.193</version> <!--低版本,支持访问内存数据库--> </dependency>

初始化sql执行

  • 如果持久化到文件,也就是url: jdbc:h2:~/test,当应用再次启动时,初始化的sql不会再执行,并且操作后新增减的数据状态将一直保存
  • 如果数据库选择的是url: jdbc:h2:mem:test,每次启动时,数据都会重新初始化
  • 这里再补充一点儿前提,只有maven配置了 mybatis-spring-boot-starter 时,初始化的sql才会执行

到此这篇关于h2database在springboot中的使用教程的文章就介绍到这了,更多相关springboot使用h2database内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

标签:使用