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

网友投稿 394 2022-08-27


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

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

前言

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

官网:http://h2database.com/

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

@RestController

public class UserController {

@Autowired

UserRepository 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

@Repository

public interface UserRepository extends JpaRepository {

}

数据库脚本文件

架构 (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 ConsoleTCP 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、PostgreSQLAUTO_RECONNECT=TRUE:连接丢失后自动重新连接AUTO_SERVER=TRUE:启动自动混合模式,允许开启多个连接,该参数不支持在内存中运行模式TRACE_LEVEL_SYSTEM_OUT、TRACE_LEVEL_FILE:输出跟踪日志到控制台或文件, 取值0为OFF,1为ERROR(默认值),2为INFO,3为DEBUGSET TRACE_MAX_FILE_SIZE mb:设置跟踪日志文件的大小,默认为16M


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:序列比对在biopython中的处理
下一篇:使用biopython查询NCBI数据库
相关文章

 发表评论

暂时没有评论,来抢沙发吧~