SpringBoot整合H2新手入门

Spring项目使用H2内存数据库做单元测试 Spring 做单元测试 单元测试很重要,对于Spring项目,特别是测试Service层或者dao层的代码时。需要验证访问数据库的逻辑是否正确。测试Dao层的代码两种方式 使用外置数据库 测试环境在外置数据库里面。这种情况下如果外置的数据库里面的数据变化了。就可能会导致单元测试跑不过。这种方式也是大家常用的但是不规范。 使用内存数据库 内存数据库也是一个数据库,只不过是在内存里面。每次程序启动的... 阅读详情

添加依赖

    <dependencies>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
    </dependencies>

项目结构

在这里插入图片描述

配置H2和JPA注入参数

server:
  port: 9090
spring:
  datasource:
    driverClassName: org.h2.Driver
    url: jdbc:h2:mem:dbtest
    username: sa
    password: sa
  h2:
    console:
      enabled: true
      path: /h2
      settings:
        web-allow-others: true
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
  sql:
    init:
      platform: h2
      schema-locations: classpath:db/schema.sql
      data-locations: classpath:db/data.sql

配置数据库的表结构

配置数据库的表结构schema.sql

create table if not exists tb_user (
USER_ID int not null primary key auto_increment,
USER_NAME varchar(100)
);

初始化数据

数据文件 data.sql, 默认插入一条

INSERT INTO tb_user (USER_ID, USER_NAME)
VALUES (1, '赵一');

测试

JDBC URL jdbc:h2:mem:dbtest
User Name sa
Password sa
页面访问路径 localhost:9090/h2
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

案例

使用H2存放用户表,并通过JPA操作用户数据

实体类

给User添加@Entity注解,和@Table注解

package com.example.springbooth2.entity;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "tb_user")
public class User {

    @Id
    private int userId;
    private String userName;

    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }
}

Dao继承JpaRepository

package com.example.springbooth2.dao;

import com.example.springbooth2.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends JpaRepository<User, Integer> {

}

service

package com.example.springbooth2.service;

import com.example.springbooth2.entity.User;

import java.util.List;

public interface UserService {
    void addUser(User user);

    List<User> list();
}

package com.example.springbooth2.service.impl;

import com.example.springbooth2.dao.UserRepository;
import com.example.springbooth2.entity.User;
import com.example.springbooth2.service.UserService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    @Resource
    private UserRepository userDao;

    @Override
    public void addUser(User user) {
        userDao.save(user);
    }

    @Override
    public List<User> list() {
        return userDao.findAll();
    }
}

Controller

package com.example.springbooth2.controller;

import com.example.springbooth2.entity.User;
import com.example.springbooth2.service.UserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {

    @Resource
    private UserService userService;

    @PostMapping("add")
    public User add(User user) {
        userService.addUser(user);
        return user;
    }

    @GetMapping("list")
    public List<User> list() {
        return userService.list();
    }
}

测试

localhost:9090/user/list
在这里插入图片描述

springboot整合jpa+h2     JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。    JPA的主要目标之一就是提供更加简单的编程模型:在JPA框架下创建实体和创建Java 类一样简单,没有任何的约束和限制,只需要使用 javax.persistence.Entity进行注释,JPA的框架和接... 阅读详情

相关推荐

springboot整合jpa和h2数据库

前面准备工作 h2数据库的连接 1.创建数据库 右击右下角黄色图标,单击创建新的数据库 设置用户名密码 单击h2/bin 目录下的 h2.bat 在弹出的浏览器中输入 http://localhost:8082 连接 springboot中整合JPA和H2 1.添加依赖 org.springframework.boot spring-boot-starter-data-jpa com...

zhangziqi1988的博客 1459

SpringBoot整合H2数据库

H2是一个Java语言编写的嵌入式数据库,它不受平台的限制,同时H2提供了一个十分方便的web控制台,用于操作和管理数据库内容。H2还提供兼容模式,可以兼容一些主流的数据库,也可以为缓存数据库使用,它具有比较完备的数据库特性,如支client/server连接,能够支持标准的SQL语句,支持存储过程等。因此采用H2作为开发期、测试期和演示的数据库非常方便,它不太适合作为大规模生产数据库。

白豆五的博客 1万+

springboot整合mybatis+h2+oracle进行多库多数据源

一、引入mybatis以及h2依赖         &lt;dependency&gt; &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt; &lt;artifactId&gt;mybatis-spring-boot-starter&lt;/artifactId&gt; ...

不积跬步 无以至千里 4531

Spring 数据初始 H2 后进行数据查询提示 Schema not found 错误

在运行测试的错误有提示下面的错误: Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Schema "DBO" not found; SQL statement: select myscofile0_.id as id1_1_0_, myscofile0_.dateC as datec2_1_0_, myscofile0_.dateM as datem3_1_0_, myscofile0_.uuid as uuid4_1_0_, myscofile0

HONEY MOOSE 4323

JavaFX桌面开发——整合H2数据库

这篇文章主要讲述了 如何在SpringBoot 已经整合了JavaFx的情况下配置H2,为后续的打包EXE建立了良好的基础。

2401_89221704的博客 635

【深度学习】通俗易懂讲解循环神经网络LSTM

目录 1、循环神经网络(Recurrent Neural Networks) 2、长依赖存在的问题 3、LSTM 网络 4、LSTMs的核心思想 5、一步一步理解LSTM 6、LSTM的变种 7、总结 1、循环神经网络(Recurrent Neural Networks) 人对一个问题的思考不会完全从头开始。比如你在阅读本片文章的时,你会根据之前理解过的信息来理解下面看到的文字。...

Nieson2012的专栏 2726

h2数据库基本操作

刚刚无奈去问了经理一个很傻很傻的问题,不管怎么样,还是记录下来吧,以免以后再犯傻。 1:打开h2数据库时只需运行bin下的jar包,不需要输入账号密码点connect。运行后所有数据库均可被访问。输入用户名密码只是为了在网页上对指定数据库进行操作,如导入脚本。 2:第一次运行jar包时,分别填好:Driver Class:org.he.Driver;  JDBC URL: jdbc:h2:tc

964

神经网络(十五)在VS Code下搭建PyTorch环境

pytorch在vscode中的配置和使用

就随便写写.... 5万+

H2:SpringBoot整合内存数据库

H2数据库是一种轻量级的、嵌入式的关系型数据库管理系统(RDBMS),它被设计用于嵌入到Java应用程序中。H2数据库以纯Java代码的形式实现,因此它不需要外部的数据库服务器或独立的进程来运行,可以直接作为Java类库嵌入到应用程序中,或者以服务器模式在网络上提供服务。

燕双嘤 3078

Pspice开关电源仿真:从零实现反激式电源设计实战案例

通过Pspice仿真工具,手把手实现反激式开关电源的设计与优化,深入剖析关键参数设置与波形分析,帮助掌握Pspice在电源开发中的实际应用技巧。

weixin_35756690的博客 1153

vue + video.js 加载多种视频流(HLS、FLV、RTMP、RTSP)

由于需要在一个项目内接入多种常用的视频流,所以接触到video.js,这里就做个记录。vue安装就不讲了,直接从项目开始了。RTSP格式已测试,无法成功播放,浏览器就识别不了STSP协议(提供两个解决方案:第一个是通过后端去转格式。第二个方案就是安装插件/中间件。目前想用浏览器直接播放RTSP格式流,没有其他更好的解决方法。

qq_17627195的博客 1万+

开发工具 - springboot整合h2数据库

文章目录1.h2介绍2.Springboot整合H22.1 h2依赖2.2 yml配置文件2.3 SQL脚本2.4 实体类2.5 Mapper2.6 测试类3.未完待续 ... 1.h2介绍 官方文档,最为致命:https://www.ctolib.com/docs/sfile/h2-database-doc/index.html H2数据库是由Java编写、基于内存的数据库,它所占的空间非常小。虚拟机启动的时候建立数据库,虚拟机关闭的时候销毁数据库。 由于h2数据库可缓存临时数据等特点,所以此数据库经

彭_德华的博客 1万+

2023 年全国网络安全行业职业技能大赛-电子数据取证分析师-决赛WP_2023网络安全行业赛取证

数据库取证工具里面可以恢复删除掉的数据带红叉的就说删除过的,game库下面announcement_detail表里面update_time字段使用sql语句时间戳最大为1513243355转换时间为2017-12-14 17:22:35。

2401_89791684的博客 2091

【H2实践】之 SpringBoot 整合

SpringBoot 官方对 H2 做了很好的整合。当 SpringBoot 应用启动时,应用会自己创建 H2 数据库文件,启动 H2 数据库服务,并支持 H2 数据库 web 客户端 Console 的连接。 接下来只需要 定义数据模型,并根据业务处理数据,最后保存数据即可。

小子宝丁的博客 1411

5步VS传统WinForm!AntdUI让界面设计从“土味”到“超模”只需30秒?

摘要:墨瑾轩编程教程《AntdUI的5大魔法步骤》详解如何将传统WinForm升级为现代化UI。教程通过5个核心步骤:安装AntdUI库、控件替换、主题定制、复杂布局构建及实战案例演示,对比传统开发与AntdUI在美观度(动态阴影/动画)、开发效率(拖拽组件VS手工绘制)和主题定制(一键换肤VS重写控件)的显著差异。使用C#代码示例展示按钮动画、3D翻转、聊天界面等特效实现,帮助开发者快速掌握这一基于Ant Design风格的WinForm增强框架。(150字)

java专栏 1125

网络工程师教程第6版(2024年最新版)

本书 根据《网络工程师考试大纲》(2024年审定通过)编写,对网络工程师岗位所要求的主要知 识及应用技术进行了阐述。本书主要内容包括数据通信、局域网、无线通信网、网络互连、网络安全、网络操作系统与应用服务器、组网技术、网络管理、网络规划和设计。本书是参加网络工程师考试的必备教材,也可作为网络工程从业人员学习网络技术的教材或日常工作的参考用书。王涛和严体华编写了第2章、第3章和第4章;网络工程师教程(第6版)由清华大学出版社出版,由工业和信息化部教育与考试中心组编,张永刚、王涛、高振江任主编,具体介绍如下。

鹿鸣天涯 6901

Springboot整合H2

H2是一个用Java编写的数据库,类似tomcat,有自己的安装包,同时又提供了内嵌功能,只需要引入相关jar包即可. 既然是内嵌的,那么它的生命周期与当前服务保持一致,即服务启动时开启(并初始化),服务停止后数据消失,正是由于这样的特性,所以特别适合用来做测试. 本文采用Springboot+Spring Jpa + h2做演示. 依赖 关键依赖如下,其他请参考源码 <dependency> <groupId>com.h2database</groupId>

1269

EMC诊断技术及电磁兼容理论设计

本文深入探讨了EMC诊断技术,重点在于滤波篇,详细讲解了EMI滤波器的设计、选型、测试及应用注意事项。内容涵盖噪声限值法规、滤波器的法规依据、插入损耗测试以及滤波电容的高频特性。同时,还阐述了噪声源的近场与远场特性,如何快速定位和抑制噪声。通过实例分析,提供了滤波器件和辐射噪声抑制器件的选型策略。

让你爱上电路设计 2161

springboot整合h2

在 Spring Boot 中整合 H2 数据库非常简单。H2 是一个轻量级的嵌入式数据库,非常适合开发和测试环境。

qq_37069064的博客 1077

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

SpringBoot-人人开源框架 整合H2数据库,MySql转H2数据库

基于springBoot 人人开源框架,mysql 转H2 数据库集成。

dovelixian的博客 3861

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【SpringBoot新手篇】SpringBoot 集成H2数据库

SpringBoot 整合H2概述h2数据库SpringBoot整合测试pomymlEmbedded 嵌入式Remote (client/server) 远程连接In-Memory 内存logback-spring.xmlApplicationentity 概述h2数据库 h2database为我们提供了十分轻量,十分快捷方便的内嵌式数据库 H2是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。 可以同应用程序打包在一起发布 它的另一个用途是用于单元测试。启动速度快,而且可

输入技术、输出想法 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

springboot+springsecurity 整合h2数据库 开启远程连接

一般的Springboot工程整合h2数据库的时候,如果需要开启远程连接 非常的简单,在applications里面进行配置即可 #配置数据库h2的参数 #spring.datasource.url=jdbc:h2:file:h2 #spring.datasource.driver-class-name=org.h2.Driver #spring.datasource.username=root #spring.datasource.password=123456 #在浏览器中开启控制台 #spring.h

sinat_36695865的博客 1492

SpringBoot整合H2Database(IDEA)

使用idea快速创建一个springboot工程项目快速整合H2Database

Symon的博客 1195

springboot整合h2databse 内存数据库

1、h2databse 介绍 H2是一个短小精干的嵌 入式数据库引擎,主要的特性包括: 1、免费、开源、快速; 2、嵌入式的数据库服务器,支持集群; 3、提供JDBC、ODBC访问接口,提供基于浏览器的控制台管理程序; 4、Java编写,可使用GCJ和IKVM.NET编译; 5、短小精干的软件,1M左右。  &emsp快速是因为h2数据库是内存数据库,所以相对来说比Mysql会...

疯狂的蜗牛 1058

SpringBoot + MyBatis + H2

在SpringBoot环境下使用Mybatis,数据库使用内嵌数据库H2 环境 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.

qq_33854869的博客 1万+

【H2实践】之 SpringBoot 与 H2 数据交互

文章是 SpringBoot 整合 H2 实践的关键部分。采用标准的 MVC 分层模式构建了项目,完成了目标需求设计。结合第三部分测试,验证了 SpringBoot 与 H2 数据库整合成功。

小子宝丁的博客 750
上一篇: 阿里云服务器上的linux系统开放端口
下一篇: IDEA启动SpringBoot提示端口被占用
迷失的小鹿
博客等级 码龄8年 1万+粉丝 199原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值