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

yizhihongxing

以下是详细的攻略:

一、什么是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日

相关文章

  • Java编程倒计时实现方法示例

    下面是详细讲解“Java编程倒计时实现方法示例”的完整攻略: 1. 关于Java编程倒计时的实现 Java编程中的倒计时通常通过计时器(Timer)和计时任务(TimerTask)来实现。Timer是Java提供的一个能够定时执行任务的工具类,TimerTask则是一个任务执行类,我们可以将需要定时执行的任务封装在TimerTask中,然后由Timer去执行…

    Java 2023年5月20日
    00
  • SpringBoot参数校验之@Validated的使用详解

    下面就为大家详细讲解“SpringBoot参数校验之@Validated的使用详解”。 什么是@Validated 在Spring框架中,我们经常需要对方法入参的校验,以保证参数的正确性。 SpringBoot基于Hibernate Validator,为开发者提供了方便简洁的实现方式:@Validated。 @Validated 用于校验方法入参,可以将该…

    Java 2023年5月20日
    00
  • win10怎么安装java?win10系统安装java的方法

    下面是安装 Java 的完整攻略。 准备工作 在开始安装 Java 之前,需要确认你的计算机上尚未安装 Java 环境,可以通过以下方式检查: 打开命令行窗口,输入命令 java -version,如果显示类似 “java version 1.8.0_241” 的信息,则表示已安装 Java 环境; 如果没有显示版本信息,或提示未找到 java 命令,则需要…

    Java 2023年5月24日
    00
  • 解析SpringBoot整合SpringDataRedis的过程

    解析SpringBoot整合SpringDataRedis的过程,需要经过以下步骤: 步骤一:添加Redis的依赖 在pom.xml文件中添加以下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boo…

    Java 2023年5月20日
    00
  • 推荐一款 IntelliJ IDEA 神级插件,由 ChatGPT 团队开发,免费使用,堪称辅助神器!

    来源:https://blog.csdn.net/m0_64880608/article/details/130201349 什么是Bito? Bito是一款在IntelliJ IDEA编辑器中的插件,Bito插件是由ChatGPT团队开发的,它是ChatGPT团队为了提高开发效率而开发的一款工具。 ChatGPT团队是一支专注于自然语言处理技术的团队,他们…

    Java 2023年5月4日
    00
  • Java创建线程及配合使用Lambda方式

    创建线程 在 Java 中,创建线程主要有两种方式:继承 Thread 类和实现 Runnable 接口。 继承 Thread 类 继承 Thread 类是最简单的一种创建线程的方式,在继承 Thread 类后,需要重写 run 方法,在 run 方法中编写需要执行的代码。然后创建一个线程实例并调用 start 方法,这个方法会启动一个新线程,并且会自动调用…

    Java 2023年5月18日
    00
  • Python爬虫利用cookie实现模拟登陆实例详解

    Python爬虫利用cookie实现模拟登陆实例详解 一、前言 在进行爬虫开发时,如果要爬取需要登录的网站的数据,那么就需要模拟浏览器进行登录操作。为了避免每次都手动操作,我们可以使用cookie来实现模拟登录。 二、什么是cookie? Cookie是存储于用户浏览器中的一小段文本文件。它可以用来存储用户的登录信息、设置语言选项等等。网站可以通过向浏览器发…

    Java 2023年6月16日
    00
  • Spring MVC之WebApplicationContext_动力节点Java学院整理

    Spring MVC之WebApplicationContext 本篇攻略将详细讲解Spring MVC框架中的WebApplicationContext,帮助大家了解WebApplicationContext的作用、用法以及注意事项等内容。 什么是WebApplicationContext WebApplicationContext是Spring MVC框…

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