java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > springboot使用h2database

h2database在springboot中的使用教程

作者:梦想家haima

这篇文章主要介绍了h2database在springboot中的使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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

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>

    <!-- https://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 #必须配置,不然无法访问

启动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;
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;
}

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

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

初始化sql执行

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

您可能感兴趣的文章:
阅读全文