h2database在springboot中的使用教程

网友投稿 241 2023-03-04

h2database在springboot中的使用教程

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

类库,使用maven简易安装

可以同应用程序打包在一起发布

可持久化,也可以直接基于内存不保留数据,适合于做单元测试

maven依赖

org.springframework.boot

spring-boot-starter

org.springframework.boot

spring-boot-starter-web

org.projectlombok

lombok

true

com.h2database</groupId>

h2

runtime

1.4.193

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.1.1

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应用类,访问http://localhost:8080/h2-console就可以使用数据库管理后台了

测试查询功能

完整代码参考:https://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;

importEbsDVV 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;

}

访问http://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依赖添加一个低版本的

com.h2database

h2

runtime

1.4.193

初始化sql执行

如果持久化到文件,也就是url: jdbc:h2:~/test,当应用再次启动时,初始化的sql不会再执行,并且操作后新增减的数据状态将一直保存

如果数据库选择的是url: jdbc:h2:mem:test,每次启动时,数据都会重新初始化

这里再补充一点儿前提,只有maven配置了 mybatis-spring-boot-starter 时,初始化的sql才会执行

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信数据发布平台有哪些(微信用什么数据库)
下一篇:Idea安装及涉及springboot详细配置的图文教程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~