• springboot基础(29):内存数据库H2


    前言

    内存数据库。Springboot提供了3种内嵌数据库,H2、HSQL、Derby,非常小巧,可以在springboot中运行。

    内嵌数据库H2

    1 导入依赖

      <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    1. 配置h2允许访问
    spring:
      h2:
        console:
          path: /h2
          enabled: true  #线上运行时需要设置为false,避免暴露公网
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 启动项目,并访问h2, 地址:http://127.0.0.1:8080/h2,账号sa,密码123456, 点击连接,提示失败。
      在这里插入图片描述
      在这里插入图片描述

    2. 发现C盘下没有对应的配置文件,配置数据源
      在这里插入图片描述

    spring:
      h2:
        console:
          path: /h2
          enabled: true   #线上运行时需要设置为false,避免暴露公网
      datasource:
        url: jdbc:h2:~/test
        hikari:
          username: sa
          password: 123456
          driver-class-name: org.h2.Driver
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    1. 在配置数据源后重新启动,并登录连接h2
      在这里插入图片描述
    2. 创建表并插入数据
    create table book (id int,name varchar,type varchar,description varchar)
    
    • 1

    在这里插入图片描述
    插入记录

    INSERT INTO `book` (`id`, `name`, `type`, `description`) VALUES ('1', '明朝的那点事儿', '历史', '明朝永乐年间,朱元璋...');
    INSERT INTO `book` (`id`, `name`, `type`, `description`) VALUES ('2', '明朝的那点事儿2', '历史2', '明朝永乐年间,朱元璋2...');
    
    • 1
    • 2

    在这里插入图片描述

    1. (不需要启动服务器,直接执行测试用例)测试插入数据
        @Test
        void testUpdate(@Autowired JdbcTemplate jdbcTemplate){
            String sql="insert into book (name,type,description) VALUES ('hello','测试','测试内容')";
            int i=jdbcTemplate.update(sql);
            System.out.println(i);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    可以看到影响记录行1,表示插入成功
    在这里插入图片描述

    1. (不需要启动服务器,直接执行测试用例)查询数据
     @Test
        void testQuery(@Autowired JdbcTemplate jdbcTemplate){
            String sql="select * from book ";
            RowMapper<Book> rm=new RowMapper<Book>() {
                @Override
                public Book mapRow(ResultSet rs, int rowNum) throws SQLException {
                    Book book=new Book();
                    book.setId(rs.getInt("id"));
                    book.setName(rs.getString("name"));
                    book.setType(rs.getString("type"));
                    book.setDescription(rs.getString("description"));
                    return book;
                }
            };
            List<Book> books=jdbcTemplate.query(sql,rm);
            System.out.println(books);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    可以查询到刚刚插入的数据
    在这里插入图片描述

    9 启动服务器,查看h2控制台,可以查看到刚刚插入的数据
    在这里插入图片描述

    扩展内容

    HSQL的依赖

    <dependency>
                <groupId>org.hsqldb</groupId>
                <artifactId>hsqldb</artifactId>
            </dependency>
    
    • 1
    • 2
    • 3
    • 4

    Derby的依赖

    <dependency>
                <groupId>org.apache.derby</groupId>
                <artifactId>derby</artifactId>
            </dependency>
            <dependency>
                <groupId>org.apache.derby</groupId>
                <artifactId>derbyclient</artifactId>
            </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    FreeRTOS学习笔记-任务
    linux的常见命令
    【Vue3 源码解析】to 系列全家桶
    MySQL高可用之MHA集群
    5.1SpringBoot整合Kafka(工具安装Kafka+Tools)
    【6 ElementUI Tabs控件第二个tab页签Div宽度缩小的问题】
    Qt实现将字节数组以hex形式显示到文本框的方法
    【毕业设计】酒店评价情感倾向分析系统 - python 深度学习
    多频电磁法概述 - 2. 理论
    Mysql5.7大限将至升级Mysql 8.0过程记录(未完)
  • 原文地址:https://blog.csdn.net/u011628753/article/details/125525586