• SpringBoot SpringBoot 开发实用篇 4 数据层解决方案 4.3 H2数据库


    SpringBoot

    【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】

    SpringBoot 开发实用篇

    4 数据层解决方案

    4.3 H2数据库
    4.3.1 问题引入

    之前我们已经看了SpringBoot 中默认的对数据源、持久化技术对应的解决方案

    在这里插入图片描述

    问题来了,数据库有吗?【当然毋庸置疑,肯定有的】

    4.3.2 内置数据库

    SpringBoot提供了3种内嵌数据库供开发者选择,提高开发测试效率

    • H2
    • HSQL
    • Derb

    这几个数据库都是用Java 语言开发的【内存模式启动】

    三个都足够【轻巧】

    先导入坐标

    MySQL 的驱动就可以不要了

    在这里插入图片描述

    jdbc 留着,总得留一个持久层技术吧

    <dependency>
        <groupId>com.h2databasegroupId>
        <artifactId>h2artifactId>
    dependency>
    
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-data-jpaartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    现在程序一跑起来就自带这个H2 数据库了

    添加上web 依赖

    在这里插入图片描述

    把原来的配置信息都注掉

    在这里插入图片描述

    # h2 数据库
    server:
      port: 80
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    OK,启动服务器

    在这里插入图片描述

    可以明显看到和之前不一样

    【h2数据库的管理控制台】

    在这里插入图片描述

    spring:
      h2:
        console:
          path: /h2
          enabled: true
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    再次启动

    在这里插入图片描述

    打开浏览器 输入localhost/h2

    在这里插入图片描述

    好家伙

    在这里插入图片描述

    仔细看看

    在这里插入图片描述

    在这里插入图片描述

    点击连接

    在这里插入图片描述

    看到报错了 [Database “C:/Users/DingJiaxiong/test” not found, either pre-create it or allow remote database creation (not recommended in secure environments) 90149-214] 90149/90149 (帮助)

    改一下配置信息

    spring:
      h2:
        console:
          path: /h2
          enabled: true
    
      datasource:
        url: jdbc:h2:~/test
        hikari:
          driver-class-name: org.h2.Driver
          username: sa
          password: 123456
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    按照浏览器中的信息配置

    重启

    在这里插入图片描述

    再次尝试点击连接

    在这里插入图片描述

    OK,这样就进来了【第一次初始化的时候才用配置,之后都可以不用了】

    在这里插入图片描述

    这些就是表【当然笔者现在的SpringBoot 版本已经和李老师的有区别了】

    先来创建一张表

    create table tbl_book(id int,type varchar,name varchar,description varchar)

    在这里插入图片描述

    在这里插入图片描述

    这样表就建好了

    查一下 select * from tbl_book

    在这里插入图片描述

    插入数据 insert into tbl_book values(1,'springboot','springboot','springboot')

    在这里插入图片描述

    再查一下

    在这里插入图片描述

    这样就有数据了

    这就是H2 内嵌数据库的大致使用方法了,接下来就该编程了

    @Test
    void testJdbcTemplateSave(){
    
        String sql = "insert into tbl_book values(2,'haha','heihei','xixi')";
    
        jdbcTemplate.update(sql);
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    直接执行咱们之前的测试【把id 加上】

    在这里插入图片描述

    好家伙,成功了

    再次运行上面那个查询全部的

    @Test
    void testJdbcTemplate(){
    
        String sql = "select * from tbl_book";
        RowMapper<Book> rm = new RowMapper<Book>() {
            @Override
            public Book mapRow(ResultSet rs, int rowNum) throws SQLException {
                Book temp = new Book();
                temp.setId(rs.getInt("id"));
                temp.setName(rs.getString("name"));
                temp.setType(rs.getString("type"));
                temp.setDescription(rs.getString("description"));
    
                return temp;
            }
        };
        List<Book> bookList = jdbcTemplate.query(sql, rm);
        System.out.println(bookList);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    执行结果:

    在这里插入图片描述

    妙啊【现在直接就可以用了,不关MySQL 的事儿了】

    现在我们接入 MP

    在这里插入图片描述

    然后JDBC 为了避免版本冲突就可以拿掉了

    在这里插入图片描述

    把dao 层复活!

    package com.dingjiaxiong.dao;
    
    
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.dingjiaxiong.domain.Book;
    import org.apache.ibatis.annotations.Mapper;
    
    
    /**
     * ClassName: BookDao
     * date: 2022/10/20 10:53
     *
     * @author DingJiaxiong
     */
    
    @Mapper
    public interface BookDao extends BaseMapper<Book> {
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    直接进行测试

    @Autowired
    private BookDao bookDao;
    
    @Test
    void test() {
        bookDao.selectById(1);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    运行结果

    在这里插入图片描述

    看到报错了,BOOK表没找到

    MP的配置没开…

    在这里插入图片描述

    再试一次

    在这里插入图片描述

    没毛病【大概就是这样了】

    回顾一下

    设置当前项目为web工程,并配置H2管理控制台参数

    在这里插入图片描述

    操作数据库(创建表)

    在这里插入图片描述

    设置访问数据源

    在这里插入图片描述

    H2数据库控制台仅用于开发阶段,线上项目请务必关闭控制台功能

    在这里插入图片描述

    SpringBoot可以根据url地址自动识别数据库种类,在保障驱动类存在的情况下,可以省略配置

    在这里插入图片描述

    牛逼牛逼

    4.3.3 小结
    1. H2内嵌式数据库启动方式
    2. H2数据库线上运行时请务必关闭
    4.3.4 总结

    现有数据层解决方案技术选型

    在这里插入图片描述

    1. 数据源配置(Hikari)
    2. 持久化技术(JdbcTemplate)
    3. 数据库(H2
  • 相关阅读:
    嵌入式开发:使用快速应用程序开发 (RAD) 工具的3个技巧
    pycharm2020无法打开,点击无反应
    springmvc国际化
    SpringThirdDay
    计算机基础-了解软硬件-00:文章内容规划、了解软件和硬件的区别
    IPSEC的原理及配置步骤整理(一)
    权限认证[还是有问题]
    C++ Qt开发:Qt的安装与配置
    Python 自定义模块和包实现GUI(图形界面)登录界面
    网络安全的红利还能吃几年?
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/127915462