h2database在springboot中的使⽤教程
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/batis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
<groupId&batis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
</dependencies>
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数据库springframework是什么意思
持久化与否url: jdbc:h2:mem:test代表数据放置于内存中,这种适合做单元测试,⼀次性使⽤
url: jdbc:h2:~/test代表数据存放于家⽬录/test中
测试查询功能
Application.java
package demosimple.h2;
batis.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 ller;
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(){
ById(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;
}
返回结果{"id":1,"name":"Jone","age":18,"email":"test1@baomidou"}
问题收集
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内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。