以下是详细的攻略:
一、什么是Spring Data JPA
Spring Data JPA是Spring框架中对JPA(Java Persistence API)规范的封装。JPA是一种ORM(Object Relational Mapping)框架,用于将Java对象映射到关系型数据库。
Spring Data JPA对JPA的封装简化了数据访问层的开发,开发者只需要定义一个Repository接口,而无需编写实现类,Spring Data JPA会自动生成实现类,简化了开发流程。
二、示例代码
2.1 添加Spring Data JPA依赖
在项目的pom.xml文件中添加以下依赖:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>2.5.4</version>
</dependency>
2.2 创建实体类
创建一个学生的实体类,在src/main/java目录下的包名为com.example的包中新建一个Student类,代码如下:
@Entity
@Table(name = "student")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private Integer age;
// 省略getter和setter方法
}
在实体类上加上了@Entity
和@Table
注解,表示这是一个JPA实体类,同时指定表名为student。@Id
注解表示id属性是主键,并且使用了自增长策略,@Column
注解指定了name和age字段在数据库表中对应的列名。
2.3 创建Repository接口
创建一个Repository接口,用于操作学生实体类,代码如下:
public interface StudentRepository extends JpaRepository<Student, Long> {
}
这里使用了Spring Data JPA提供的JpaRepository
接口,它提供了许多常用的CRUD操作方法,使用时只需要继承该接口并指定实体类和主键类型即可。如上述代码中,继承了JpaRepository<Student, Long>
,表示该Repository操作的是Student实体,主键类型为Long。
2.4 进行CRUD操作
接下来我们使用Repository对Student实体进行CRUD操作。在src/main/java目录下的包名为com.example的包中新建一个StudentController类,代码如下:
@RestController
@RequestMapping("/students")
public class StudentController {
@Autowired
private StudentRepository studentRepository;
// 添加学生
@PostMapping
public Student addStudent(@RequestBody Student student) {
return studentRepository.save(student);
}
// 根据id查询学生
@GetMapping("/{id}")
public Student getStudent(@PathVariable Long id) {
return studentRepository.findById(id).orElse(null);
}
// 查询所有学生
@GetMapping
public List<Student> getAllStudents() {
return studentRepository.findAll();
}
// 修改学生信息
@PutMapping("/{id}")
public Student updateStudent(@PathVariable Long id, @RequestBody Student student) {
Optional<Student> optionalStudent = studentRepository.findById(id);
if (!optionalStudent.isPresent()) {
return null;
}
student.setId(id);
return studentRepository.save(student);
}
// 删除学生
@DeleteMapping("/{id}")
public void deleteStudent(@PathVariable Long id) {
studentRepository.deleteById(id);
}
}
上面定义了一个StudentController类,使用Spring MVC的注解对该Controller进行映射,提供了增加、查询、修改和删除学生信息的接口。
其中使用了@Autowired
注解自动装配了一个StudentRepository对象,通过该对象来操作Student实体。
2.5 示例测试
启动应用程序后,通过postman或其他工具进行测试。
2.5.1 添加学生
POST http://localhost:8080/students
Body:
{
"name": "张三",
"age": 18
}
返回结果:
{
"id": 1,
"name": "张三",
"age": 18
}
2.5.2 查询学生
查询id为1的学生信息:
GET http://localhost:8080/students/1
返回结果:
{
"id": 1,
"name": "张三",
"age": 18
}
2.5.3 查询所有学生
GET http://localhost:8080/students
返回结果:
[
{
"id": 1,
"name": "张三",
"age": 18
}
]
2.5.4 修改学生信息
修改id为1的学生信息:
PUT http://localhost:8080/students/1
Body:
{
"name": "李四",
"age": 20
}
返回结果:
{
"id": 1,
"name": "李四",
"age": 20
}
2.5.5 删除学生
删除id为1的学生:
DELETE http://localhost:8080/students/1
删除成功。
三、代码库
如果你对代码感兴趣,并想要进行更加深度开发可以查看完整代码:https://github.com/ZhangKTKTW/spring-data-jpa-demo
这个demo包含了各个实体之间的联系,以及Spring Data JPA查询之间的区别,具有完整的学习用途。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Data JPA实现持久化存储数据到数据库的示例代码 - Python技术站