在SpringBoot项目中添加内存数据库H2是一个快速进行开发、测试和验证的好方法。H2是一个用Java编写的嵌入式数据库,它可以嵌入到Java应用程序中,也可以在客户端-服务器模式下运行。以下是在SpringBoot中添加H2内存数据库的步骤:
一、添加H2和JPA的依赖
首先,需要在项目的pom.xml
文件中添加H2和Spring Data JPA的依赖。这些依赖将允许你的SpringBoot应用程序与H2数据库进行交互。
|
<dependencies> |
|
<!-- 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> |
|
<!-- 其他依赖 --> |
|
</dependencies> |
二、配置H2和JPA
接下来,需要在application.properties
或application.yml
文件中配置H2数据库和JPA的参数。这些参数包括数据库的连接信息、驱动类名、用户名和密码等。
在application.properties
中配置:
|
spring.datasource.url=jdbc:h2:mem:dbtest |
|
spring.datasource.driverClassName=org.h2.Driver |
|
spring.datasource.username=sa |
|
spring.datasource.password=sa |
|
spring.datasource.platform=h2 |
|
spring.jpa.hibernate.ddl-auto=update |
|
spring.jpa.show-sql=true |
|
spring.h2.console.enabled=true |
|
spring.h2.console.path=/h2-console |
在application.yml
中配置:
|
spring: |
|
datasource: |
|
url: jdbc:h2:mem:dbtest |
|
driverClassName: org.h2.Driver |
|
username: sa |
|
password: sa |
|
platform: h2 |
|
jpa: |
|
hibernate: |
|
ddl-auto: update |
|
show-sql: true |
|
h2: |
|
console: |
|
enabled: true |
|
path: /h2-console |
三、创建数据库表和数据
在资源目录(如src/main/resources
)下创建schema.sql
和data.sql
文件,用于定义数据库表结构和初始数据。
schema.sql
:
|
CREATE TABLE IF NOT EXISTS tb_user ( |
|
USER_ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|
USER_NAME VARCHAR(100) |
|
); |
data.sql
:
|
INSERT INTO tb_user (USER_ID, USER_NAME) VALUES (1, '赵一'); |
在application.properties
或application.yml
文件中,指定这些SQL文件的路径:
|
spring.datasource.schema=classpath:schema.sql |
|
spring.datasource.data=classpath:data.sql |
或者:
|
spring: |
|
datasource: |
|
schema: classpath:schema.sql |
|
data: classpath:data.sql |
四、创建实体类和Repository接口
创建一个实体类来映射数据库表,并创建一个Repository接口来执行数据访问操作。
实体类(User.java):
|
package com.example.demo.entity; |
|
|
|
import javax.persistence.Entity; |
|
import javax.persistence.Id; |
|
import javax.persistence.Table; |
|
|
|
@Entity |
|
@Table(name = "tb_user") |
|
public class User { |
|
|
|
@Id |
|
private Long userId; |
|
private String userName; |
|
|
|
// Getters and Setters |
|
} |
Repository接口(UserRepository.java):
|
package com.example.demo.repository; |
|
|
|
import com.example.demo.entity.User; |
|
import org.springframework.data.jpa.repository.JpaRepository; |
|
import org.springframework.stereotype.Repository; |
|
|
|
@Repository |
|
public interface UserRepository extends JpaRepository<User, Long> { |
|
// 自定义查询方法(可选) |
|
} |
五、运行程序并访问H2控制台
启动SpringBoot应用程序,然后访问H2数据库的Web控制台来查看和管理数据库内容。默认情况下,H2控制台的访问URL是//localhost:8080/h2-console
(如果端口不是8080,请根据实际情况修改)。在控制台中,输入JDBC URL(如jdbc:h2:mem:dbtest
)、用户名(如sa
)和密码(如sa
)来连接数据库。
六、使用Repository进行数据访问
在Service或Controller层中使用UserRepository进行数据访问操作。例如,查询所有用户:
|
package com.example.demo.service; |
|
|
|
import com.example.demo.entity.User; |
|
import com.example.demo.repository.UserRepository; |
|
import org.springframework.beans.factory.annotation.Autowired; |
|
import org.springframework.stereotype.Service; |
|
|
|
import java.util.List; |
|
|
|
@Service |
|
public class UserService { |
|
|
|
@Autowired |
|
private UserRepository userRepository; |
|
|
|
public List<User> getAllUsers() { |
|
return userRepository.findAll(); |
|
} |
|
} |
在Controller中使用UserService:
|
package com.example.demo.controller; |
|
|
|
import com.example.demo.entity.User; |
|
import com.example.demo.service.UserService; |
|
import org.springframework.beans.factory.annotation.Autowired; |
|
import org.springframework.web.bind.annotation.GetMapping; |
|
import org.springframework.web.bind.annotation.RestController; |
|
|
|
import java.util.List; |
|
|
|
@RestController |
|
public class UserController { |
|
|
|
@Autowired |
|
private UserService userService; |
|
|
|
@GetMapping("/users") |
|
public List<User> getAllUsers() { |
|
return userService.getAllUsers(); |
|
} |
|
} |
现在,你可以启动SpringBoot应用程序,并访问localhost:8080/users
(如果端口不是8080,请根据实际情况修改)来查看所有用户列表。
通过以上步骤,你已经成功在SpringBoot项目中添加了H2内存数据库,并配置了JPA进行数据访问。这为你提供了一个快速开发和测试的环境。