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日

相关文章

  • centos7.2.1511安装jdk1.8.0_151及mysql5.6.38的方法

    下面给出详细的攻略: 安装JDK1.8.0_151 下载JDK1.8.0_151安装包 从Oracle官网下载对应版本的JDK1.8.0_151压缩包,下载链接为 [jdk-8u151-linux-x64.tar.gz][1]。 解压JDK1.8.0_151安装包 使用以下命令将JDK1.8.0_151解压到 /usr/local/ 目录下: tar -zx…

    Java 2023年5月20日
    00
  • Java Mybatis框架由浅入深全解析上篇

    Java Mybatis框架由浅入深全解析上篇 介绍 Java Mybatis框架是一个基于Java语言的数据映射框架,它是一种半自动化的ORM框架,通过XML配置文件或注解的方式将Java对象与数据库进行映射。 Mybatis的基本结构 Mybatis的基本结构包括四个部分: Configuration(配置类):读取mybatis配置文件中的信息,生成全…

    Java 2023年5月19日
    00
  • 什么是Spring Boot

    Spring Boot是一个用于创建独立且基于Spring的生产级别应用程序的框架。它提供了诸如自动配置、嵌入式Web服务器以及依赖项管理等功能,因此使得Spring应用程序的开发变得更加快捷、容易。 为什么要使用Spring Boot 快速构建Spring应用:Spring Boot具有自动配置的能力,生态圈也非常丰富,因此可以极大地提高Spring应用的…

    Java 2023年5月15日
    00
  • Apache+Servlet+Jsp环境设置(上)

    Apache+Servlet+Jsp环境设置是Web开发中非常重要的一步。以下是完整的攻略: 环境准备 安装Java JRE 下载Tomcat服务器并解压 安装Apache服务器 配置Apache服务器 修改配置文件httpd.conf,在文件末尾添加以下内容: apacheconf LoadModule jk_module modules/mod_jk.s…

    Java 2023年5月20日
    00
  • IDEA2020.1.2创建web项目配置Tomcat的详细教程

    下面给您讲解详细的“IDEA2020.1.2创建web项目配置Tomcat的详细教程”攻略。 步骤一:安装Tomcat 在安装Tomcat之前,必须先确认JDK是否安装成功,因为Tomcat是依赖于JDK的,若JDK未安装则需要先安装JDK。可在官网上下载Tomcat安装包,解压到指定目录即可。 步骤二:创建WEB项目 1.打开Intellij IDEA,选…

    Java 2023年6月16日
    00
  • SpringBoot整合Freemarker实现页面静态化的详细步骤

    下面是详细的步骤: 1. 创建Spring Boot项目 可以使用Spring Boot官方提供的Spring Initializr快速生成一个基础项目。 2. 添加依赖 在pom.xml文件中添加Freemarker依赖: <dependency> <groupId>org.springframework.boot</grou…

    Java 2023年5月31日
    00
  • java中JsonObject与JsonArray转换方法实例

    下面是对 “Java中JsonObject与JsonArray转换方法实例” 的详细讲解。 什么是JSONObject和JSONArray? JSONObject 和 JSONArray 是 JSON 格式的两种常用的 Java 类型。其中,JSONObject 是一个键值对的集合,类似于 Java 中的 Map,而 JSONArray 则是一组有序的值集合…

    Java 2023年5月26日
    00
  • 下载站常用的点击下载地址提示设hao123为首页的js代码

    下载站常用的点击下载地址提示设hao123为首页的js代码,可以帮助网站引导用户将hao123设为浏览器的主页,从而提升网站的用户使用体验。下面是这个js代码的完整攻略。 在HTML文件中引入js文件 在标签中添加以下代码: <script src="js/hao123.js"></script> 注意:这里的路径…

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