前言
对于Java的相关知识推荐阅读:java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
1. 基本知识
在Spring Boot中,@Id
注解通常用于标识实体类中的主键字段
主要的原理如下:
- 告诉JPA实体类中哪个属性是实体的主键
- 当使用JPA进行持久化操作时,JPA实现会依赖于
@Id
注解来确定主键属性
基本的作用如下:
- 标识主键属性:标识实体类中的主键字段,告诉JPA该字段将用作数据库表的主键
- 数据持久化:JPA可以正确地识别和操作实体对象,使得在数据库中进行CRUD操作时能够准确地找到和操作相应的实体
简易的Demo如下:
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String email;
// Constructors, getters, and setters
}
2. 项目思路
创建User实体类并标注@Id
注解
// User.java
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String email;
// Constructors, getters, and setters
}
创建UserRepository接口,继承自JpaRepository<User, Long>
,用于对User实体进行持久化操作
// UserRepository.java
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
}
编写Spring Boot应用程序来测试实体的创建、查询、更新和删除操作
// DemoApplication.java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(DemoApplication.class, args);
UserRepository userRepository = context.getBean(UserRepository.class);
// 创建用户
User user = new User();
user.setUsername("JohnDoe");
user.setEmail("john@example.com");
userRepository.save(user);
// 通过ID查询用户
User savedUser = userRepository.findById(user.getId()).orElse(null);
System.out.println("Saved User: " + savedUser);
// 更新用户
savedUser.setEmail("john.doe@example.com");
userRepository.save(savedUser);
// 删除用户
userRepository.delete(savedUser);
context.close();
}
}