spring boot2.x中集成H2數據庫


H2數據庫介紹  查看

在spring boot中集成

1.添加依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

2.添加H2相關配置,修改application.properties文件

spring.jpa.database=h2
spring.jpa.show-sql=true
#ddl執行方式,update create 等

spring.datasource.url=jdbc:h2:./data/test;AUTO_SERVER=TRUE
spring.jpa.hibernate.ddl-auto=update
spring.datasource.username=sa
spring.datasource.password=123456
spring.datasource.driverClassName=org.h2.Driver

spring.h2.console.path=/h2-console
spring.h2.console.enabled=true

說明:

  spring.datasource.url

  數據庫文件

  (1)內存數據庫

    jdbc:h2:mem:DBName

    內存數據庫的數據存在內存中,當程序停止時,不會被保存會丟失

    eg:

      spring.datasource.url=jdbc:h2:mem:test

  (2)文件數據庫

    jdbc:h2:file:{FilePath} 也可以簡化為 jdbc:h2:{FilePath}

    FilePath的格式

    a)  ./{path}/{fileName} 在當前程序的根目錄下創建目錄和數據庫文件

    b)  ~/{path}/{fileName} 在當前用戶的根目錄下創建目錄和數據庫文件

    c)  C:/{path}/{fileName} 在指定盤符的指定目錄下創建數據庫文件

  (3)遠程數據庫 

    jdbc:h2:tcp://<{IP|hostname}>[:{Port}]/[]<{dbName}>

  附加參數:

    AUTO_SERVER=TRUE 啟動自動混合模式,允許開啟多個連接,該參數不支持在內存中運行模式

    DB_CLOSE_ON_EXIT=FALSE,當虛擬機退出時並不關閉數據庫

3.代碼

  domain層,即User類(entity)

package com.example.demo.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.*;

@Entity
@Table(name = "user")
@Data
public class User {
    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    private int id;
    private String name;

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

  dao層,即UserRepository 接口

package com.example.demo.dao;

import com.example.demo.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface  UserRepository extends JpaRepository<User,Integer> {
    List<User> getUsersByName(String Name);
}

  controller層,即Demo

package com.example.demo.controller;

import com.example.demo.dao.UserRepository;
import com.example.demo.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class Demo {
    @Autowired
    private UserRepository repo;

    @RequestMapping("find")
    public List<User> find() {
        return (List<User>) repo.findAll();
    }
}

  編寫DemoApplication

package com.example.demo;

import com.example.demo.dao.UserRepository;
import com.example.demo.domain.User;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class DemoApplication {

    @Bean
    InitializingBean saveData(UserRepository repo){

        return ()->{
            User u = new User();
            u.setName("abc");
            repo.save(u);
            User u1 = new User();
            u1.setName("zyx");
            repo.save(u1);

        };
    }

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

}

  啟動項目,打開瀏覽器訪問http://localhost:8080/find

 

  訪問http://localhost:8080/h2-console/

  連接上后查詢數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM