SpringBoot+Spring Data JPA整合H2数据库的示例代码

目录
  • 前言
  • Maven依赖
  • Conroller
  • 实体类
  • Repository
  • 数据库脚本文件
  • 配置文件
  • 启动项目
  • 访问H2数据库
    • 查看全部数据
    • H2数据库文件
    • 运行方式

前言

  • H2数据库是一个开源的关系型数据库。H2采用java语言编写,不受平台的限制,同时支持网络版和嵌入式版本,有比较好的兼容性,支持相当标准的sql标准
  • 提供JDBC、ODBC访问接口,提供了非常友好的基于web的数据库管理界面

官网:http://www.h2database.com/

Maven依赖

<!--jpa-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--web-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--h2-->
<dependency>
	<groupId>com.h2database</groupId>
	<artifactId>h2</artifactId>
	<scope>runtime</scope>
</dependency>
<!--lombok-->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<optional>true</optional>
</dependency>

Conroller

@RestController
public class UserController {

    @Autowired
    UserRepository userRepository;
   @RequestMapping("/list")
    public List<User> findAll(){
       List<User> userList = userRepository.findAll();
       return userList;
   }
   @RequestMapping("/save")
   public String save(User user){
       userRepository.save(user);
       return "保存成功";
   @RequestMapping("/update")
   public String update(User user){
       return "更新成功";
   @RequestMapping("/delete")
   public String delete(Integer id){
       userRepository.deleteById(id);
       return "删除成功";
}

实体类

@AllArgsConstructor
@NoArgsConstructor
@Entity
@Data
@Table(name = "user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;
    private Integer age;
    private Integer gender;
}

Repository

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

}

数据库脚本文件

架构 (DDL) 脚本资源引用
schema.sql

drop table if exists user;
create table user(
    `id` int primary key auto_increment,
    `name` varchar(255) not null,
    `age` int not null,
    `gender` int not null
);

数据 (DML) 脚本资源引用

insert into user (id,name,age,gender) values (null, '张三',18,1);
insert into user (id,name,age,gender) values (null, '李四',19,1);
insert into user (id,name,age,gender) values (null, '王五',20,1);
insert into user (id,name,age,gender) values (null, '李六',21,1);

配置文件

#---------服务器配置-----------
server.port=8080

#---------数据源配置-----------
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:file:./data;AUTO_SERVER=TRUE
spring.datasource.username=sa
spring.datasource.password=
#架构 (DDL) 脚本资源引用
spring.datasource.schema=classpath:db/schema.sql
#数据 (DML) 脚本资源引用
spring.datasource.data=classpath:db/data.sql
#SQL脚本编码
spring.datasource.sql-script-encoding=UTF-8
#初始化模式
spring.datasource.initialization-mode=ALWAYS
#如果在初始化数据库时发生错误,是否停止
spring.datasource.continue-on-error=true
#---------JPA配置-------------
#要操作的目标数据库
spring.jpa.database=h2
#控制台显示SQL语句
spring.jpa.show-sql=true
#更新或者创建数据表结构
spring.jpa.hibernate.ddl-auto=update
#物理命名策略的完全限定名称
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
#是否在启动时初始化架构
spring.jpa.generate-ddl=true
#----------H2配置--------------
#http://localhost:8080/h2-console
spring.h2.console.path=/h2-console
#启用控制台
spring.h2.console.enabled=true

启动项目

访问H2数据库

访问:http://localhost:8080/h2-console

查看全部数据

由于设置了数据库脚本,所以SpringBoot项目每次启动都会运行一遍sql文件

#架构 (DDL) 脚本资源引用
spring.datasource.schema=classpath:db/schema.sql
#数据 (DML) 脚本资源引用
spring.datasource.data=classpath:db/data.sql
#SQL脚本编码
spring.datasource.sql-script-encoding=UTF-8
#初始化模式
spring.datasource.initialization-mode=ALWAYS
#如果在初始化数据库时发生错误,是否停止
spring.datasource.continue-on-error=true

H2数据库文件

数据库文件位置通过spring.datasource.url来指定

spring.datasource.url=jdbc:h2:file:./data;AUTO_SERVER=TRUE

运行方式

1.在内存中运行
数据库只在内存中运行,关闭连接后数据库将被清空,适合测试环境
连接字符串:

jdbc:h2:mem:DBName;DB_CLOSE_DELAY=-1

2.嵌入式
数据库持久化存储为单个文件
连接字符串:

jdbc:h2:file:~/.h2/DBName;AUTO_SERVER=TRUE

3.服务模式
H2支持三种服务模式:

  • web server:此种运行方式支持使用浏览器访问H2 Console
  • TCP server:支持客户端/服务器端的连接方式
  • PG server:支持PostgreSQL客户端

启动tcp服务连接字符串示例:

jdbc:h2:tcp://localhost/~/test 使用用户主目录
jdbc:h2:tcp://localhost//data/test 使用绝对路径

4.连接字符串参数

  • DB_CLOSE_DELAY:要求最后一个正在连接的连接断开后,不要关闭数据库
  • MODE=MySQL:兼容模式,H2兼容多种数据库,该值可以为:DB2、Derby、HSQLDB、MSSQLServer、MySQL、Oracle、PostgreSQL
  • AUTO_RECONNECT=TRUE:连接丢失后自动重新连接
  • AUTO_SERVER=TRUE:启动自动混合模式,允许开启多个连接,该参数不支持在内存中运行模式
  • TRACE_LEVEL_SYSTEM_OUT、TRACE_LEVEL_FILE:输出跟踪日志到控制台或文件, 取值0为OFF,1为ERROR(默认值),2为INFO,3为DEBUG
  • SET TRACE_MAX_FILE_SIZE mb:设置跟踪日志文件的大小,默认为16M

到此这篇关于SpringBoot+Spring Data JPA整合H2数据库的文章就介绍到这了,更多相关SpringBoot整合H2数据库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot整合spring-data-jpa的方法

    jpa是JavaEE定义的一种规范,常用的实现一般是Hibernate,而spring-data-jpa则是对jpa的又一层封装,提供了更多便捷的方法. 这里不会深入讲解spring-data-jpa的使用,只是讲解怎么快速的整合使用,目的是帮助那些想学,但是在整合上老是翻车的同学 导入依赖 <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> &

  • SpringBoot整合Spring Data JPA的详细方法

    目录 前言 核心概念 新建SpringBoot项目 创建MySQL数据库 创建实体类 创建Repository 创建处理器 准备SQL文件 编写配置文件 最终效果 启动SpringBoot项目 查看数据库 自动更新数据表结构 测试JPA的增删改查 测试查询所有 测试保存数据 测试更新数据 测试删除数据 前言 Spring Data JPA 是更大的 Spring Data 家族的一部分,可以轻松实现基于 JPA 的存储库.该模块处理对基于 JPA 的数据访问层的增强支持.它使构建使用数据访问技术

  • SpringBoot如何整合SpringDataJPA

    这篇文章主要介绍了SpringBoot整合SpringDataJPA代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.pom.xml添加依赖 <dependencies> <!--web--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-we

  • SpringBoot整合SpringDataJPA

    目录 SpringBoot整合JPA JPA & Spring Data JPA Hibernate & JPA 1.JPA 2.JPA & Hibernate 关系 Hibernate VS Mybatis 一.导入依赖 二.简单的CRUD 1.配置文件 2.实体类 3.Dao层 4.service层 5.controller 三.自定义SQL 四.分页查询 五.连表查询 六.分组查询 七.与mybatis对比 总结 SpringBoot整合JPA 使用数据库是开发基本应用的基础

  • SpringBoot+Spring Data JPA整合H2数据库的示例代码

    目录 前言 Maven依赖 Conroller 实体类 Repository 数据库脚本文件 配置文件 启动项目 访问H2数据库 查看全部数据 H2数据库文件 运行方式 前言 H2数据库是一个开源的关系型数据库.H2采用java语言编写,不受平台的限制,同时支持网络版和嵌入式版本,有比较好的兼容性,支持相当标准的sql标准 提供JDBC.ODBC访问接口,提供了非常友好的基于web的数据库管理界面 官网:http://www.h2database.com/ Maven依赖 <!--jpa-->

  • springboot+spring data jpa实现新增及批量新增方式

    目录 springboot+spring data jpa实现新增及批量新增 springdatajpa 新增操作注意 springboot+spring data jpa实现新增及批量新增 spring data jpa (以下简称jpa).这个orm其实和mybatis还是差不多的.但是相对于mybatis来说,省去很多方法,毕竟jpa来说,官方文档给的说法是编写者只需要书写接口.剩下的事就交由jpa来完成.当时,洒家还是不信的.当你用过一次后,你就会发现.真的是这样.只能用两个字来形容,即

  • 基于Spring Data的AuditorAware审计功能的示例代码

    Spring Data提供支持审计功能:即由谁在什么时候创建或修改实体.Spring Data提供了在实体类的属性上增加@CreatedBy,@LastModifiedBy,@CreatedDate,@LastModifiedDate注解,并配置相应的配置项,即可实现审计功能,有系统自动记录 createdBy CreatedDate lastModifiedBy lastModifiedDate 四个属性的值,下面为具体的配置项. 示例 创建一个实体类 package com.hfcsbc.i

  • Spring Data JPA实现分页Pageable的实例代码

    在JPA中提供了很方便的分页功能,那就是Pageable(org.springframework.data.domain.Pageable)以及它的实现类PageRequest(org.springframework.data.domain.PageRequest),详细的可以见示例代码. 1.改变CustomerRepository方法​ /** * 一个参数,匹配两个字段 * @param name2 * @Param pageable 分页参数 * @return * 这里Param的值和

  • 使用Spring Data JDBC实现DDD聚合的示例代码

    本文讨论了Spring Data JDBC如何实现DDD中聚合根存储的设计思路,其中主要讨论了是不是每个实体都需要一个对应数据表,这种问题需要根据具体情况而定. Spring Data JDBC比JPA更容易理解,比如对象引用特性会很有趣.作为第一个示例,请考虑以下领域模型: class PurchaseOrder { private @Id Long id; private String shippingAddress; private Set<OrderItem> items = new

  • Spring Boot 整合持久层之Spring Data JPA

    目录 整合Spring Data JPA 1. 创建数据库 2. 创建项目 3. 数据库配置 4. 创建实体类 5. 创建 BookDao 接口 6. 创建 BookService 7. 创建 BookController 8. 测试 整合Spring Data JPA JPA (Java Persistence API)和 Spring Data 是两个范畴的概念. Hibernate 是一个 ORM 框架,JPA 则是一种ORM,JPA 和 Hibernate 的关系就像 JDBC 与 JD

  • 使用Spring Data JPA的坑点记录总结

    前言 Spring-data-jpa的基本介绍:JPA诞生的缘由是为了整合第三方ORM框架,建立一种标准的方式,百度百科说是JDK为了实现ORM的天下归一,目前也是在按照这个方向发展,但是还没能完全实现.在ORM框架中,Hibernate是一支很大的部队,使用很广泛,也很方便,能力也很强,同时Hibernate也是和JPA整合的比较良好,我们可以认为JPA是标准,事实上也是,JPA几乎都是接口,实现都是Hibernate在做,宏观上面看,在JPA的统一之下Hibernate很良好的运行. 最近在

  • spring data jpa使用详解(推荐)

    使用Spring data JPA开发已经有一段时间了,这期间学习了一些东西,也遇到了一些问题,在这里和大家分享一下. 前言: Spring data简介: Spring Data是一个用于简化数据库访问,并支持云服务的开源框架.其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务. Spring Data 包含多个子项目: Commons - 提供共享的基础框架,适合各个子项目使用,支持跨数据库持久化 JPA - 简化创建 JPA 数据访问层和跨存储的持久层

  • 详解Spring Data Jpa当属性为Null也更新的完美解决方案

    开场白 我本来是一名android开发者,突然就对java后端产生了浓烈的兴趣.所以,立马就转到了后端.第一个项目使用的使用Spring Data Jpa来操作数据库的,可是在更新数据的时候发现一个问题,属性值为Null竟然也更新,这就会导致本来没有更新的属性值,全部就成了Null. 原因 经过一番度娘操作,原来Jpa,不知道你是想把属性设置为Null,还是不想. 解决方法 找到一个方法,就是在数据模型上加上注解@DynamicUpdate,可是发现并不好使.而后经过整理,找到以下解决方案 我们

  • Spring Security+Spring Data Jpa如何进行安全管理

    为了操作简单,我这里引入 Spring Data Jpa 来帮助我们完成数据库操作 1.创建工程 首先我们创建一个新的 Spring Boot 工程,添加如下依赖: 注意,除了 Spring Security 依赖之外,我们还需要数据依赖和 Spring Data Jpa 依赖. 工程创建完成后,我们再在数据库中创建一个空的库,就叫做 withjpa,里边什么都不用做,这样我们的准备工作就算完成了. 2.准备模型 接下来我们创建两个实体类,分别表示用户角色了用户类: 用户角色: @Entity(

随机推荐