Spring Boot之连接数据库(Jpa)+增删改查的实现

此篇文章的上一篇:使用IDEA创建Spring Boot项目(maven)
注:Spring Boot 版本为2.2.6

Spring-Data-Jpa
JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这-规范的产品有Hibernate、TopLink等。

1.引入依赖

在pom中添加依赖,无需加版本号,添加后重新导入一下maven

<dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
</dependency>

2.添加数据库配置

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/test?useSSL=true&serverTimezone=UTC&characterEncoding=UTF-8
    username: root
    password: 123456

  jpa:
    hibernate:
      ddl-auto: create  //注意create与update等的不同  
    show-sql: true  //是否打印执行的sql语句,true/false

3.根据实体类建表

写一个实体类,注意添加注解

package com.example.demo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity  //实体类的注解
public class Student {

    @Id  //@id注意选择这个javax.persistence
    @GeneratedValue //为一个实体生成一个唯一标识的主键
    private Integer id;

    private String name;
    private String hobby;

	//以下是自动生成的构造方法和get()set()方法
    public Student() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getHobby() {
        return hobby;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }
}


启动项目,会自动建表,上面设置了ddl-show为true所以会打印sql如下红框
(因为选的是create所以先drop,如果是update就不会先删再建,而是在原本的基础上进行sql操作,一般不选用create,后文代码是改成了update的)
在这里插入图片描述去数据库里看一下,建表成功了
在这里插入图片描述

4.增删改查之准备工作

准备一个Repository接口来对数据库进行操作,里面封装了很多实用的方法

以下是几个等会用到的:

  • save() 用于新增和修改
  • findAll() 用于查找所有
  • findById() 通过id查询
  • deleteById() 通过id删除

还有很多其他方法就不一 一列举了

package com.example.demo;

import org.springframework.data.jpa.repository.JpaRepository;

public interface StudentRepository extends JpaRepository<Student,Integer> {
}

5.增删改查之增

package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class StudentController {

    @Autowired
    private StudentRepository repository;
    
    @PutMapping("/student")
    public Student create(@RequestParam("name") String name,@RequestParam("hobby") String hobby){
        Student student = new Student();
        student.setName(name);
        student.setHobby(hobby);
        return repository.save(student);
    }


}

启动项目,然后用Postman发put请求:
在这里插入图片描述去数据库看一下:
在这里插入图片描述

6.增删改查之查

(1)查询所有学生信息

@GetMapping("/student")
    public List<Student> select() {
        return repository.findAll();
    }

在这里插入图片描述
在这里插入图片描述
(2)通过id查询学生信息

 @GetMapping("/student/{id}")
    public Student selectById(@PathVariable("id") Integer id){
        return repository.findById(id).orElse(null); 
   }

在这里插入图片描述

7.增删改查之改

@PutMapping("/student/{id}")
    public Student update(@PathVariable("id") Integer id,
                          @RequestParam("name") String name,
                          @RequestParam("hobby") String  hobby){
        
        Optional<Student> optional = repository.findById(id);
        if(optional.isPresent()){
            Student student = optional.get();
            student.setName(name);
            student.setHobby(hobby);
            return repository.save(student);
        }
        return null;
    }

在这里插入图片描述

8.增删改查之删

通过id删除学生信息

@PutMapping("/delStudent/{id}")
    public boolean del(@PathVariable("id") Integer id){
        if(repository.findById(id).isPresent()){
            repository.deleteById(id);
            return true;
        }
        return false;
    }

在这里插入图片描述在这里插入图片描述

发布了13 篇原创文章 · 获赞 0 · 访问量 753

猜你喜欢

转载自blog.csdn.net/weixin_44822335/article/details/105247494