Spring Data JPA实现持久化存储数据到数据库的示例代码

以下是详细的攻略:

一、什么是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技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • SpringBoot 集成MongoDB实现文件上传功能

    SpringBoot是一个轻量级的JavaEE(Enterprise Edition)应用程序框架,集成MongoDB实现文件上传功能是一种非常实用的功能。下面,将详细讲解SpringBoot集成MongoDB实现文件上传功能的完整攻略。 创建SpringBoot项目 首先,需要创建一个SpringBoot项目,并添加相应的依赖。 在pom.xml文件中添加…

    Java 2023年6月3日
    00
  • Java多线程Callable接口实现代码示例

    下面是Java多线程Callable接口实现的完整攻略步骤: 1.什么是Callable接口 Callable和Runnable类似,都是用来创建线程的接口,但是Callable的call()方法有返回值,并且可以抛出异常。 public interface Callable<V> { V call() throws Exception; } 2…

    Java 2023年5月19日
    00
  • 详解在springmvc中解决FastJson循环引用的问题

    这里为你详细讲解在Spring MVC中解决FastJson循环引用的问题。 首先,FastJson简介:Fastjson是阿里巴巴开发的Java JSON库,具有超快的解析和序列化机制、可自定义模型输出格式等优势,得到了广泛的应用。 然而,当我们在使用FastJson时,可能会遇到序列化JSON数据时出现循环引用的情况。例如,一个对象A中包含了对象B的引用…

    Java 2023年5月31日
    00
  • Ajax+Struts2实现验证码验证功能实例代码

    实现验证码验证功能是网站开发中非常常见的一项功能,其主要目的在于防止恶意攻击和机器人批量操作。本篇将向读者介绍如何使用Ajax和Struts2框架来实现验证码验证功能,并提供完整的示例代码。 实现过程 1. 前端 我们首先在前端的页面中添加一个输入框用来接收验证码,使其能够与后端进行通信。需要注意的是,此处需要开启CORS跨域支持,因为我们后端与前端所在服务…

    Java 2023年5月20日
    00
  • 详解JNI到底是什么

    JNI全称为Java Native Interface,是Java语言与其他编程语言(如C、C++)进行交互的接口。JNI可以使Java程序通过调用本地(C、C++)编写的程序,实现高效的、与操作系统直接交互的功能。下面详细讲解JNI到底是什么,让你对JNI有更深刻的理解和认识。 什么是JNI? JNI是Java的一部分,是Java语言本身提供的一个开发工具…

    Java 2023年5月26日
    00
  • Jquery easyui 实现动态树

    JQuery EasyUI 是一个基于jQuery的UI组件库,提供了常见的UI组件如表格、表单、下拉框、树等等。它简化了前端页面开发的流程,使得开发人员能够更加便捷地构建富客户端应用程序。本篇文章将详细讲解如何使用 JQuery EasyUI 实现一个动态树,并提供两个示例。 一、准备工作 在开始实现动态树之前,我们需要准备以下工作: 1.安装JQuery…

    Java 2023年5月20日
    00
  • java如何利用poi解析doc和docx中的数据

    当需要从 Word 文档中提取数据的时候,我们可以使用 Apache POI 来读取 “.doc” 和 “.docx” 文件。下面是如何利用 POI 解析 Word 文档中数据的攻略: 1. 添加 POI 依赖 在项目中添加以下依赖: <dependency> <groupId>org.apache.poi</groupId&g…

    Java 2023年5月20日
    00
  • GoLang与Java各自生成grpc代码流程介绍

    GoLang与Java都支持gRPC服务的生成,下面将详细介绍它们各自生成gRPC代码的流程: GoLang生成gRPC代码的流程 1.准备proto文件 准备好proto文件,它定义了gRPC服务所需要的消息结构和服务接口。 syntax = "proto3"; package greeter; message HelloRequest…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部