H2数据库使用教程

本文是一篇关于H2数据库的使用教程,涵盖了从添加JPA和H2依赖,到配置schema.sql和data.sql文件,再到实体类、持久层接口和控制层的创建步骤,帮助读者快速上手H2数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标题如何使用H2数据库

一 简介

    H2是一个Java编写的关系型数据库,它可以被嵌入Java应用程序中使用,或者作为一个
单独的数据库服务器运行。 

二 用法

1 在pom.xml添加JPA和H2的依赖
	<!-- 嵌入式数据库H2依赖 -->
	<dependency>
  		<groupId>com.h2database</groupId>
  		<artifactId>h2</artifactId>
  		<scope>runtime</scope>
  	</dependency>
  	
	 <!-- Spring Data JPA依赖 -->
	<dependency>
  		<groupId>org.springframework.boot</groupId>
  		<artifactId>spring-boot-starter-data-jpa</artifactId>
  	</dependency>
2 在src/main/resources下添加文件schema.sql,用于启动时插入测试表(表的字段名须与实体类属性相对应)
		drop table user if exists;
			create table user(
				id  bigint(5) primary key AUTO_INCREMENT,
				name  varchar(30),
				sex  varchar(12),
				);
3 在src/main/resources下添加文件data.sql,用于启动时插入测试数据
		insert into user(id,name,sex) values (1,'牛','男');
		insert into user(id,name,sex) values (2,'鬼','女');
		insert into user(id,name,sex) values (3,'蛇','女');
		insert into user(id,name,sex) values (4,'神','男');
4 在配置文件application.properties添加相关常用的配置(可根据需求更改)
	# 启用SQL语句的日志记录
		spring.jpa.show-sql = true
	# 设置ddl模式
		spring.jpa.hibernate.ddl-auto = none
	# 数据库连接设置
		spring.datasource.driver-class-name =org.h2.Driver
		spring.datasource.url = jdbc:h2:mem:dbc2m
	# 指定的静态配置路径
		#spring.datasource.url = jdbc:h2:file:D:/db/.h2/dbc2m;AUTO_SERVER=TRUE
	# 数据库连接账号
		spring.datasource.username = sa
	# 数据库连接密码
		spring.datasource.password = sa
	# 数据初始化设置,每次启动程序,程序都会运行resources/schema.sql文件,对数据库的结构进行操作。
		spring.datasource.schema=classpath:db/schema.sql
	# 数据初始化设置,每次启动程序,程序都会运行resources/data.sql文件,对数据库的数据操作。
		spring.datasource.data=classpath:db/data.sql
	# h2 web console设置,表明使用的数据库平台是h2
		spring.datasource.platform=h2
	# 远程访问支持配置进行该配置后,h2 web consloe就可以在远程访问了。否则只能在本机访问。
		spring.h2.console.settings.web-allow-others=true
	# 配置访问h2 web consloe的路径,即 YOUR_URL/h2-console(YOUR_URL是程序的访问URl)。
		spring.h2.console.path=/h2-console
	# 程序开启时默认会启动h2 web consloe,如果不想启动h2 web consloe,可设置为false。
		spring.h2.console.enabled=true
5 创建实体类
@table(name=”user”)
public class User implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;

	@Column
	private String name;

	@Column
	private String sex;

	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", sex=" + sex + "]";
	}
}
注:@Id :声明被标注的属性与数据表的主键形成映射关系
	@GeneratedValue(strategy = GenerationType.IDENTITY):声明主键的生成策略
	@Column:用来标识实体类中属性与数据表中字段的对应关系
	@Table:标注实体类,其name属性表示与实体类对应的表的名称,默认表明为实体类的名称
6 创建持久层接口(如下所示),用@Repository标记并继承JpaRepository<User,Long>接口
@Repository
public interface UserRepository extends JpaRepository<User, Long>{

}
注 : 
	泛型参数 User 为自定义的实体类
	泛型参数 Long 为主键类型
7 控制层访问
@RestController
@RequestMapping("/user")
@Api(value = "基础数据接口", tags = "接口标识")
public class UserController {

	/*
	 * author:Lzq
	 */

	@Autowired
	private UserRepository userRepository;

	// 查询到方法,这里返回的是一个对象,Swagger测试工具得到的是Json格式的对象
	
	@GetMapping("/query")
	@ApiOperation(value = "测试get方法")
	public Optional<User> queryById(@RequestParam Long id) {
		Optional<User> user = userRepository.findById(id);
		return user;
	}

	// 添加或者更新的方法,ID相同则为更新,不同则为插入
	@PutMapping("/addOrUpdate")
	@ApiOperation(value = "测试put方法")
	public String addOrUpdate(User user) {
		userRepository.save(user);
		return "添加或更新成功!";
	}

	@DeleteMapping("/delete")
	@ApiOperation(value = "测试delete方法")
	public String deleteUser(Long id) {
		userRepository.deleteById(id);
		return "删除成功";
	}
}

8 运行启动类,在浏览器输入http://localhost:8080/user/query? id = 1 进行访问

							访问成功!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值