SpringBoot2.x系列教程45--整合H2数据库之代码实现

我在上一章节中详细讲解了H2数据库,接下来我带大家在Spring Boot中整合H2数据库,实现代码操作。

一. Spring Boot中整合H2数据库

1. 创建Web项目

我们按照之前的经验,创建一个web程序,并将之改造成Spring Boot项目,具体过程略。

2. 添加依赖包

<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>

3. 创作sql文件

在resource目录下创建一个db文件夹,里面创建一个scheme.sql脚本文件,供程序员启动时创建数据库中的表:

create table if not exists USER (
USE_ID int not null primary key auto_increment,
USE_NAME varchar(100),
USE_SEX varchar(1),
USE_AGE NUMBER(3),
USE_ID_NO VARCHAR(18),
USE_PHONE_NUM VARCHAR(11),
USE_EMAIL VARCHAR(100),
CREATE_TIME DATE,
MODIFY_TIME DATE,
USE_STATE VARCHAR(1));

在db文件夹中再创建另一个data.sql,用来插入数据。

INSERT INTO USER (USE_ID,USE_NAME,USE_SEX,USE_AGE,USE_ID_NO,USE_PHONE_NUM,USE_EMAIL,CREATE_TIME,MODIFY_TIME,USE_STATE) VALUES(
1,'一一哥','0',20,'240928198810051234','12345678910','2312119590@qq.com',sysdate,sysdate,'0');

INSERT INTO USER (USE_ID,USE_NAME,USE_SEX,USE_AGE,USE_ID_NO,USE_PHONE_NUM,USE_EMAIL,CREATE_TIME,MODIFY_TIME,USE_STATE) VALUES(
2,'孙一一','0',22,'240928198810051234','12345678911','2312119590@qq.com',sysdate,sysdate,'0');

INSERT INTO USER (USE_ID,USE_NAME,USE_SEX,USE_AGE,USE_ID_NO,USE_PHONE_NUM,USE_EMAIL,CREATE_TIME,MODIFY_TIME,USE_STATE) VALUES(
3,'三胖','1',24,'240928198810051234','12345678912','2312119590@qq.com',sysdate,sysdate,'0');

4. 设置配置文件

#h2配置
spring:
  jpa:
    show-sql: true #启用SQL语句的日志记录
    hibernate:
      ddl-auto: update #设置ddl模式
  datasource:
    url: jdbc:h2:F:/H2/db/db02 #配置h2数据库的连接地址
    username: root #配置数据库用户名
    password: syc123 #配置数据库密码
    driverClassName: org.h2.Driver #配置JDBC Driver
    schema: classpath:db/schema.sql #进行该配置后,每次启动程序,程序都会运行resources/db/schema.sql文件,对数据库的结构进行操作。
    data: classpath:db/data.sql  #进行该配置后,每次启动程序,程序都会运行resources/db/data.sql文件,对数据库的数据操作。
    platform: h2  #表明使用的数据库平台是h2
  h2: #h2 web console设置
    console:
      settings:
        web-allow-others: true #进行该配置后,h2 web consloe就可以在远程访问了。否则只能在本机访问。
      path: /h2 #进行该配置,你就可以通过YOUR_URL/h2访问h2 web consloe。YOUR_URL是你程序的访问URl。
      enabled: true #进行该配置,程序开启时就会启动h2 web consloe。当然这是默认的,如果你不想在启动程序时启动h2 web consloe,那么就设置为false。

5. 创建启动类

package com.yyg.boot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @Author 一一哥Sun
 * @Date Created in 2020/3/31
 * @Description Description
 */
@SpringBootApplication
public class H2Application {

    public static void main(String[] args) {
        SpringApplication.run(H2Application.class, args);
    }

}

6. 启动程序,进行测试

当我们启动了程序,就会在控制台看到如下信息:

这就意味着我们在jdbc:h2:F:/H2/db/db02路径上创建了一个db02数据库。

并且我们可以打开H2的web控制台,可以看到已经成功的自动帮我们创建出了db02这个数据库。

执行查询,看到如下结果:

二. 以服务器模式连接H2,实现增删改查

我们在上面的基础之上,对案例进行改造,把H2的连接模式从内嵌模式改成服务器模式,这种连接方式可以同时允许连接多个客户端,而内嵌模式默认情况下只能连接一个客户端。

1. 添加依赖包

<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>

2. 创建User实体类

package com.yyg.boot.domain;

import lombok.Data;

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

/**
 * @Author 一一哥Sun
 * @Date Created in 2020/4/1
 * @Description Description
 */
@Entity
@Data
public class User {

    @Id //主键
    private Integer id;

    private String name;

    private String sex;

}

3. 创建Repository

package com.yyg.boot.repository;

import com.yyg.boot.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;

/**
 * @Author 一一哥Sun
 * @Date Created in 2020/4/1
 * @Description Description
 */
public interface UserRepository extends JpaRepository<User,Integer> {
}

4. 手动创建一个H2数据库

我们可以首先手动创建出一个H2中新的数据库db05。

5. 修改application.yml配置文件

#h2配置
spring:
  jpa:
    database: h2 #指定数据库类型
    show-sql: true #启用SQL语句的日志记录
    hibernate:
      ddl-auto: update #设置ddl模式
  datasource:
    url: jdbc:h2:tcp://localhost/F:/H2/db/db05;AUTO_SERVER=TRUE #配置h2数据库的连接地址;此为service链接模式,只允许一个链接,如果想多个链接,比如测试代码链接和页面的h2控制台链接,请使用混合模式链接,将 JDBC URL 后加上 AUTO_SERVER=TRUE
    username: root #配置数据库用户名
    password: syc123 #配置数据库密码
    driverClassName: org.h2.Driver #配置JDBC Driver
    #schema: classpath:db/schema.sql #进行该配置后,每次启动程序,程序都会运行resources/db/schema.sql文件,对数据库的结构进行操作。
    #data: classpath:db/data.sql  #进行该配置后,每次启动程序,程序都会运行resources/db/data.sql文件,对数据库的数据操作。
    platform: h2  #表明使用的数据库平台是h2
  h2: #h2 web console设置
    console:
      settings:
        web-allow-others: true #进行该配置后,h2 web consloe就可以在远程访问了。否则只能在本机访问。
      path: /h2 #进行该配置,你就可以通过YOUR_URL/h2访问h2 web consloe。YOUR_URL是你程序的访问URl。
      enabled: true #进行该配置,程序开启时就会启动h2 web consloe。当然这是默认的,如果你不想在启动程序时启动h2 web consloe,那么就设置为false。

注意:

嵌入式连接模式,只允许一个连接,如果想多个连接,比如在代码中进行连接和h2控制台中连接,可以使用服务器模式或者混合模式来连接。

我们需要将 JDBC URL 后面加上 AUTO_SERVER=TRUE配置属性!

6. 编写Controller测试接口方法

package com.yyg.boot.web;

import com.yyg.boot.cache.CacheService;
import com.yyg.boot.domain.User;
import com.yyg.boot.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @Author 一一哥Sun
 * @Date Created in 2020/4/1
 * @Description Description
 */
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserRepository userRepository;

    @PostMapping("/{id}")
    public String saveUser(@PathVariable("id") Integer id) {
        User user = new User();
        user.setId(id);
        user.setName("特没谱");
        user.setSex("女");
        userRepository.save(user);
        return "success";
    }

    @GetMapping("")
    public List<User> getUser() {

        return userRepository.findAll();
    }

}

7. 编写启动类

package com.yyg.boot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @Author 一一哥Sun
 * @Date Created in 2020/3/31
 * @Description Description
 */
@SpringBootApplication
public class H2Application {

    public static void main(String[] args) {
        SpringApplication.run(H2Application.class, args);
    }

}

8. 接口测试

我们在postman中执行添加请求,插入一个id为3的信息。

我们在浏览器中输入:
http://localhost:8082/login.do地址,进入到H2的web控制台,可以看到插入了一个新的数据。

然后我们在浏览器中再执行查询请求,可以查到所有的数据信息。

至此,我们就实现了Spring Boot中整合H2数据库,实现数据的CRUD操作。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程简介这是一门使用Java语言,SpringBoot框架,从0开发一个RESTful API应用,接近企业级的项目(我的云音乐),课程包含了基础内容,高级内容,项目封装,项目重构等知识,99%代码为手写;因为这是项目课程;所以不会深入到源码讲解某个知识点,以及原理,但会粗略的讲解下基础原理;主要是讲解如何使用系统功能,流行的第三方框架,第三方服务,完成接近企业级项目,目的是让大家,学到真正的企业级项目开发技术。适用人群刚刚毕业的学生想提高职场竞争力想学从零开发SpringBoot项目想提升SpringBoot项目开发技术想学习SpringBoot项目架构技术想学习企业级项目开发技术就是想学习SpringBoot开发能学到什么从0开发一个类似企业级项目学会能做出市面上90%通用API快速增加1到2年实际开发经验刚毕业学完后能找到满意的工作已经工作学完后最高涨薪30%课程信息全课程目前是82章,155小时,每节视频都经过精心剪辑。在线学习分辨率最高1080P课程知识点1~11章:学习方法,项目架构,编码规范,Postman使用方法,Git和Github版本控制12~16章:搭建开发环境,快速入门SpringBoot框架17~20章:快速入门MySQL数据库21~30章:MyBatis,登录注册,找回密码,发送短信,发送邮件,企业级接口配置31~41章:实现歌单,歌单标签,音乐,列表分页,视频,评论,好友功能42~48章:阿里云OSS,话题,MyBatis-plus,应用监控49~53章:Redis使用,集成Redis,SpringCache,HTTP缓存54~58章:Elasticsearch使用,集成Elasticsearch,使用ES搜索59~61章:商城,集成支付宝SDK,支付宝支付62~64章:常用哈希和加密算法,接口加密和签名65~67章:实时挤掉用户,企业级项目测试环境,企业级接口文档68~69章:SpringBoot全站HTTPS,自签证书,申请免费证书70~73章:云MySQL数据库,云Redis数据库使用,轻量级应用部署环境,域名解析74~80章:Docker使用,生产级Kubernetes集群,域名解析,集群全站HTTPS81~82章:增强和重构项目,课程总结,后续学习计划

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值