Spring Data JPA
Spring Data JPA 是什么呢?它Spring Data 的一部分,基于 JPA (Java Persistence API) 提供高级别的数据库访问抽象。通过注解和接口自动生成常见的 CRUD 操作,大大简化了开发工作。 适合快速开发和简化数据库访问代码的场景。
记录于07-30 11:00
我这边使用的事jdk17 springboot3.3.2
使用 IntelliJ IDEA 创建一个 Spring Boot 项目并添加 Spring Data JPA 和 MySQL 依赖的详细步骤如下:
1. 创建 Spring Boot 项目
- 启动 IntelliJ IDEA,点击
File
->New
->Project...
选择Spring Initializr
,点击Next
- 配置 Spring Initializr 项目元数据,如 Group=com.dependencies 和 Artifact=spring-data-jpa
- 选择以下依赖:
Spring Web
Spring Data JPA
MySQL Driver
- 点击
Next
->Finish
2. 配置数据库连接
在 src/main/resources
目录下的 application.properties
文件中配置 MySQL 数据源:
spring.application.name=spring-data-jpa
# MySQL Database configuration
spring.datasource.url=jdbc:mysql://localhost:3306/spring-dependencies?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
3. 创建实体类
在
/src/main/java/com/dependencies/springdatajpa
目录下创建一个包 entity
,在其中创建一个实体类 UserEntity:
package com.dependencies.springdatajpa.entity;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
/**
* @author zhizhou 2024/7/30 23:20
*/
@Entity
public class UserEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// getters and setters
//这里可以通过 lombok 注解解决
// 下期讲解
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;
}
}
4. 创建 Repository 接口
在 /src/main/java/com/dependencies/springdatajpa
目录下创建一个包 repository
,在其中创建一个接口 UserRepository:
package com.dependencies.springdatajpa.repository;
import com.dependencies.springdatajpa.entity.UserEntity;
import org.springframework.stereotype.Repository;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @author zhizhou 2024/7/30 23:22
*/
@Repository
public interface UserRepository extends JpaRepository<UserEntity, Long> {
}
5. 创建 Service 类
在 /src/main/java/com/dependencies/springdatajpa
目录下创建一个包 service
,在其中创建一个服务类 UserService:
package com.dependencies.springdatajpa.service;
import com.dependencies.springdatajpa.entity.UserEntity;
import com.dependencies.springdatajpa.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author zhizhou 2024/7/30 23:24
*/
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public List<UserEntity> getAllUsers() {
return userRepository.findAll();
}
public UserEntity save(UserEntity userEntity) {
return userRepository.save(userEntity);
}
public void delete(Long id) {
userRepository.deleteById(id);
}
}
6. 创建 Controller 类
在 /src/main/java/com/dependencies/springdatajpa
目录下创建一个包 controller
,在其中创建一个控制器类 UserController:
package com.dependencies.springdatajpa.controller;
import com.dependencies.springdatajpa.entity.UserEntity;
import com.dependencies.springdatajpa.service.UserService;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author zhizhou 2024/7/30 23:26
*/
@RestController
@RequestMapping("/users")
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping
public List<UserEntity> getAllStudents() {
return userService.getAllUsers();
}
@PostMapping
public UserEntity saveStudent(@RequestBody UserEntity userEntity) {
return userService.save(userEntity);
}
@DeleteMapping("/{id}")
public void deleteStudent(@PathVariable Long id) {
userService.delete(id);
}
}
7. 创建和初始化数据库
确定 MySQL 数据库已经创建,并且在 application.properties
中配置的数据库名称、用户名和密码正确。
8. 启动项目
在 IntelliJ IDEA 中,右键点击主类 SpringDataJpaApplication(通常位于 src/main/java/com/dependencies/springdatajpa/SpringDataJpaApplication.java
),选择 Run 'SpringDataJpaApplication'
启动 Spring Boot 应用。
9. 调试
使用 Postman 或其他 HTTP 浏览器客户端,测试以下 API 端点:
- 获取所有用户:
GET http://localhost:8080/users
- 保存用户:
POST http://localhost:8080/users
- 删除用户:
DELETE http://localhost:8080/users/{id}
总结
添加依赖,配置数据源,编写实现基本的增删改查,重要的是实践。
源码:https://gitee.com/CoderChange/springboot-all-dependencies