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

目录

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

前言
  • H2数据库是一个开源的关系型数据库。H2采用java语言编写,不受平台的限制,同时支持网络版和嵌入式版本,有比较好的兼容性,支持相当标准的sql标准
  • 提供JDBC、ODBC访问接口,提供了非常友好的基于web的数据库管理界面
官网:http://www.h2database.com/
SpringBoot+Spring|SpringBoot+Spring Data JPA整合H2数据库的示例代码
文章图片


Maven依赖
org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-web com.h2database h2 runtime org.projectlombok lombok true


Conroller
@RestControllerpublic class UserController {@AutowiredUserRepository userRepository; @RequestMapping("/list")public List findAll(){List 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
@Repositorypublic interface UserRepository extends JpaRepository {}


数据库脚本文件 【SpringBoot+Spring|SpringBoot+Spring Data JPA整合H2数据库的示例代码】架构 (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.Driverspring.datasource.url=jdbc:h2:file:./data; AUTO_SERVER=TRUEspring.datasource.username=saspring.datasource.password=#架构 (DDL) 脚本资源引用spring.datasource.schema=classpath:db/schema.sql#数据 (DML) 脚本资源引用spring.datasource.data=https://www.it610.com/article/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-consolespring.h2.console.path=/h2-console#启用控制台spring.h2.console.enabled=true


启动项目 SpringBoot+Spring|SpringBoot+Spring Data JPA整合H2数据库的示例代码
文章图片


访问H2数据库 访问:http://localhost:8080/h2-console
SpringBoot+Spring|SpringBoot+Spring Data JPA整合H2数据库的示例代码
文章图片


查看全部数据
由于设置了数据库脚本,所以SpringBoot项目每次启动都会运行一遍sql文件
#架构 (DDL) 脚本资源引用spring.datasource.schema=classpath:db/schema.sql#数据 (DML) 脚本资源引用spring.datasource.data=https://www.it610.com/article/classpath:db/data.sql#SQL脚本编码spring.datasource.sql-script-encoding=UTF-8#初始化模式spring.datasource.initialization-mode=ALWAYS#如果在初始化数据库时发生错误,是否停止spring.datasource.continue-on-error=true

SpringBoot+Spring|SpringBoot+Spring Data JPA整合H2数据库的示例代码
文章图片


H2数据库文件
数据库文件位置通过spring.datasource.url来指定
spring.datasource.url=jdbc:h2:file:./data; AUTO_SERVER=TRUE

SpringBoot+Spring|SpringBoot+Spring Data JPA整合H2数据库的示例代码
文章图片


运行方式
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数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    推荐阅读