1.H2简介
H2是一个开源的、内存型嵌入式数据库引擎,它是一个用Java开发的类库,可直接嵌入到应用程序中,与程序一起打包发布出去,不受平台的限制。

2.引入依赖
新建一个SpringBoot工程,并在pom.xml文件中添加集成H2所需要的dependency。

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.2</version>
	<scope>provided</scope>
</dependency>

3.添加配置
在application.properties文件中添加如下配置信息。

############################################################
#
# JPA配置
#
############################################################
### 是否生产ddl语句
spring.jpa.generate-ddl = false
### 是否打印sql语句
spring.jpa.show-sql = true
### 自动生成ddl,由于指定了具体的ddl,此处设置为none
spring.jpa.hibernate.ddl-auto = none

############################################################
#
# H2配置
#
############################################################
### 使用H2数据库
spring.datasource.platform = h2
### H2驱动
spring.datasource.driver-class-name = org.h2.Driver
### 指定生成数据库的schema文件位置
spring.datasource.schema = classpath:/db/schema.sql
### 指定插入数据库语句的脚本位置
spring.datasource.data = classpath:/db/data.sql

4.数据准备
在“resources/db”目录下创建schema.sql和data.sql文件,schema.sql用于定义数据库表结构,data.sql用于为数据表初始化数据。schema.sql和data.sql文件内容分别如下所示。

create table user (
  id int(11) not null auto_increment,
  name varchar(30) default null,
  email varchar(50) default null,
  primary key (id)
);
insert into user values (2, 'cherry', '258****996@qq.com');
insert into user values (3, 'owen', '490***112@qq.com');

5.开发
在启动类所在目录下创建User类和UserRepository类。

@Entity
@Table(name = "user")
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    private String name;

    private String email;
}

这里的@Id注解不是引入“import org.springframework.data.annotation.Id”包,而是引入“import javax.persistence.*;”包。

@Repository
public interface UserRepository extends JpaRepository<User,Integer>{
    User findByName(String name);
}

6.测试用例
在单元测试类H2ApplicationTests中添加如下代码。

@SpringBootTest
@TestPropertySource("classpath:application.properties")
class H2ApplicationTests {
	@Resource
	private UserRepository userRepository;

	/**
	 * @description SpringBoot集成H2单元测试,测试用户保存是否成功
	 * @author steven
	 * @date 2020-06-14
	 */
	@Test
	public void testSave() {
		User user = new User();
		user.setId(1);
		user.setName("steven");
		user.setEmail("125****421@qq.com");
		User rs = userRepository.save(user);
		Assertions.assertNotNull(rs);
	}

	/**
	 * @description SpringBoot集成H2单元测试,测试通过用户名查找用户
	 * @author steven
	 * @date 2020-06-14
	 */
	@Test
	public void testFindByName() {
		User user = userRepository.findByName("steven");
		Assertions.assertNotNull(user);
		Assertions.assertEquals(user.getEmail(),"125****421@qq.com");
	}
}

右键执行H2ApplicationTests单元测试,这时可以看到控制台显示“All 2 test passed”以及如下打印信息。
在这里插入图片描述

7.工程目录结构
在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐