spring boot 基础-操作h2数据库

前言

之前写过使用springboot操作mysql数据库,但有时候可能只想给某个服务写个小插件使用mysql或者Oracle会显得多余,这是就可以使用h2数据库。在此不做过多的介绍,想了解的直接去h2官网。 源码地址Github

使用前提

工具/jar包 版本
idea 2018.2.8
spring boot 2.1.4.RELEASE
Maven 3.6.0
jdk 1.8

pom.xml

<dependencies>
	<!-- h2 -->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.197</version>
    </dependency>
	
    <!-- jpa -->
    <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>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

application-dev.yml

spring:
  datasource:
    url: jdbc:h2:~/test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
    platform: h2
    username: sa
    password:
    driverClassName: org.h2.Driver
  jpa:
    database-platform: org.hibernate.dialect.H2Dialect
    hibernate:
      ddl-auto: update
    properties:
      hibernate:
        show_sql: true
        use_sql_comments: true
        format_sql: true
  h2:
    console:
      enabled: true
      # path 访问h2数据库控制台 ip:port/h2
      path: /h2
      settings:
        trace: false
        web-allow-others: false
logging:
  level:
    root: INFO
server:
  port: 8081

实体类 user.java

package cn.geoary.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

/**
 * @program: spring-boot-jdbc-h2
 * @description: user实体类
 * @author: geoary
 * @create: 2019-06-15 15:52
 **/
@Entity
public class User {
    @Id
    @GeneratedValue
    private Integer id;

    @Column
    private String name;

    @Column
    private Integer age;

    @Column
    private String address;

    public User() {
    }

    public User(String name, Integer age, String address) {
        this.name = name;
        this.age = age;
        this.address = address;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                '}';
    }
}

数据接口 UserRepository.java

package cn.geoary.dao;

import cn.geoary.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Integer> {

}

服务 UserService.java

package cn.geoary.service;

import cn.geoary.entity.User;

import java.util.List;

public interface UserService {
    List<User> getAll();
    User getOneById(Integer id);
    User addUser(User user);
    User updateUser(User user);
    void deleteUser(Integer id);
}

实现类 userServiceImpl.java

package cn.geoary.service.impl;

import cn.geoary.dao.UserRepository;
import cn.geoary.entity.User;
import cn.geoary.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * @program: spring-boot-jdbc-h2
 * @description: 实现类
 * @author: geoary
 * @create: 2019-06-15 16:00
 **/
@Component("userService")
public class UserServiceImpl implements UserService {
    @Autowired
    private UserRepository userRepository;

    @Override
    public List<User> getAll() {
        return userRepository.findAll();
    }

    @Override
    public User getOneById(Integer id) {
        return userRepository.getOne(id);
    }

    @Override
    public User addUser(User user) {
        return userRepository.save(user);
    }

    @Override
    public User updateUser(User user) {
        return userRepository.save(user);
    }

    @Override
    public void deleteUser(Integer id) {
        userRepository.deleteById(id);
    }
}

控制层 UserController.java

package cn.geoary.controller;

import cn.geoary.entity.User;
import cn.geoary.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @program: spring-boot-jdbc-h2
 * @description: user控制层
 * @author: geoary
 * @create: 2019-06-15 15:56
 **/
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/findall")
    public List<User> findAll() {
        return userService.getAll();
    }

    @GetMapping("/add")
    public User addOne() {
        User user = new User("张三", 20, "北京市石景山区");
        return userService.addUser(user);
    }

    @GetMapping("update")
    public User updateOne() {
        User user = userService.getOneById(33);
        user.setName("李四");
        user.setAddress("搬到了山西省太原市");
        return userService.updateUser(user);
    }

    @GetMapping("delete")
    public String deleteOne(){
        try {
            userService.deleteUser(35);
        }catch (Exception e){
            return "删除失败";
        }
        return "删除成功";

    }
}

h2控制台

在浏览器输入 127.0.0.1:8081/h2

查看数据界面

posted @   Geoary  阅读(353)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示