首页 > 其他分享 >Spring boot HibernateJPA CRUD

Spring boot HibernateJPA CRUD

时间:2024-11-13 16:56:26浏览次数:1  
标签:CRUD name Spring boot public return Student import id

连接数据库和创建表

1.

pom安装

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

2. application.properties连接 (你的电脑本地要有mysql并且打开)

spring.datasource.url=jdbc:mysql://localhost:3306/test1
spring.datasource.username=test1
spring.datasource.password=123456
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect

3. 建立新的文件夹和类名

 

package com.example18.example_18.entity;

import jakarta.persistence.*;

@Entity
@Table(name="students")
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private  Long id;
    private String name;
    private int age;



    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

}

 

增删改查

1.定义DOA接口

2.定义DOA实现

3.更新到主程序,注入DAO

这里我是实现一个最简单的查询功能,这一步的时候应该代表你一件完成上面的连接了

我的数据库内容

 先说说目录结构

1. 

model 或 enrity是生成数据表的

比如我的students表

package com.example18.example_18.entity;

import jakarta.persistence.*;

@Entity
@Table(name="students")
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private  Long id;
    private String name;
    private int age;



    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

}

2.  repository目录,有些人写dao目录,其实一样用来数据访问的

package com.example18.example_18.dao;

import com.example18.example_18.entity.Student;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
 
@Repository
public interface StudentDAO extends JpaRepository<Student,Long> { // 这里可以添加自定义的查询方法,例如根据姓名查找学生 // Student findByName(String name); }

3. service目录,就是用来实现repository目录的内容的

package com.example18.example_18.service;

import com.example18.example_18.dao.StudentDAO;
import com.example18.example_18.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.List;

@Service
public class StudentService {
    @Autowired
    private StudentDAO studentDAO;

    @GetMapping
    public List<Student> getAllStudents(){
       return studentDAO.findAll();
    }
}

4.controller控制器层,有些人写rest目录,就是http入口的地方

 

package com.example18.example_18.rest;

import com.example18.example_18.common.Coach;
import com.example18.example_18.dao.StudentDAO;
import com.example18.example_18.entity.Student;
import com.example18.example_18.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class DemoController {
    @Autowired
    private StudentService studentService;
    public DemoController(StudentService studentService) {
        this.studentService = studentService;
    }
    @GetMapping("/students")
    public List<Student> getAllSyidents(){
        return  studentService.getAllStudents();
    }
}

 

最后,我运行跑起来

 

 

 

 

完成

下面是GPT的例子:仅仅参考作用

1.创建实体类

使用 @Entity 注解定义数据库表的实体类,例如 Student

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

@Entity
@Table(name = "students")
public class Student {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private int age;

    // Getters and Setters
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }

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

    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
}

2.创建 Repository 接口

Spring Data JPA 提供了 JpaRepository 接口,继承它可以快速实现基本的 CRUD 操作:

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

public interface StudentRepository extends JpaRepository<Student, Long> {
    // 这里可以添加自定义的查询方法,例如根据姓名查找学生
    Student findByName(String name);
}

3.创建 Service 类

在 Service 类中使用 StudentRepository 来管理 Student 数据:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.List;

@Service
public class StudentService {

    @Autowired
    private StudentRepository studentRepository;

    public List<Student> getAllStudents() {
        return studentRepository.findAll();
    }

    public Student getStudentById(Long id) {
        return studentRepository.findById(id).orElse(null);
    }

    @Transactional
    public Student createStudent(Student student) {
        return studentRepository.save(student);
    }

    @Transactional
    public Student updateStudent(Long id, Student studentDetails) {
        Student student = getStudentById(id);
        if (student != null) {
            student.setName(studentDetails.getName());
            student.setAge(studentDetails.getAge());
            return studentRepository.save(student);
        }
        return null;
    }

    @Transactional
    public void deleteStudent(Long id) {
        studentRepository.deleteById(id);
    }
}

4.创建 Controller 类

通过 REST API 暴露 CRUD 操作,以便外部调用:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/students")
public class StudentController {

    @Autowired
    private StudentService studentService;

    @GetMapping
    public List<Student> getAllStudents() {
        return studentService.getAllStudents();
    }

    @GetMapping("/{id}")
    public Student getStudentById(@PathVariable Long id) {
        return studentService.getStudentById(id);
    }

    @PostMapping
    public Student createStudent(@RequestBody Student student) {
        return studentService.createStudent(student);
    }

    @PutMapping("/{id}")
    public Student updateStudent(@PathVariable Long id, @RequestBody Student studentDetails) {
        return studentService.updateStudent(id, studentDetails);
    }

    @DeleteMapping("/{id}")
    public void deleteStudent(@PathVariable Long id) {
        studentService.deleteStudent(id);
    }
}

 

 

标签:CRUD,name,Spring,boot,public,return,Student,import,id
From: https://www.cnblogs.com/hechunfeng/p/18544263

相关文章

  • springboot毕设 奶茶物料管理系统 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着奶茶行业的蓬勃发展,奶茶店的数量急剧增加,市场竞争日益激烈。奶茶店的日常运营中,物料管理成为决定其运营效率与成本控制的关键因素。传统的物料管......
  • springboot毕设高校毕业生就业岗位推荐系统源码+论文+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着高校的不断扩招,毕业生数量逐年递增,就业市场的竞争日益激烈。在这样的大环境下,高校毕业生面临着巨大的就业压力。一方面,毕业生需要花费大量的......
  • springboot毕设基于JavaWeb的校园点餐平台源码+论文+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着校园数字化建设的不断推进以及学生生活节奏的加快,传统的校园餐饮模式面临着诸多挑战。目前,校园内餐饮需求多样且分散,学生在点餐过程中往往需......
  • springboot将文件处理成压缩文件
    前言在工作我们经常会出现有多个文件,为了节省资源会将多个文件放在一起进行压缩处理;为了让大家进一步了解我先将springboot处理的方法总结如下,有不到之处敬请大家批评指正!一、文件准备:https://qnsc.oss-cn-beijing.aliyuncs.com/crmebimage/public/product/2024/11/12/be35321......
  • springboot起步依赖原理
    起步依赖原理分析1)spring-boot-starter-parent找到spring-boot-starter-parent并进入可以看到spring-boot-dependencies依赖关系再次进入通过properties来定义了各种技术的版本信息版本锁定指我们在父工程中定义好的一些坐标和他需要的版本信息,后续如果继承这个工程的话......
  • 拒绝平铺直叙,阿里最新SpringBoot进阶笔记真香
    相信从事Java开发的朋友都听说过SSM框架,老点的甚至经历过SSH,说起来有点恐怖,比如我就是经历过SSH那个时代未流。当然无论是SSM还是SSH都不是今天的重点,今天要说的是SpringBoot,一个令人眼前一亮的框架,从大的说,SpringBoot是取代了SSM中的SS的角色。但值得一说的是,SpringBoot这......
  • 基于java+springboot+layui的流浪动物交流信息平台设计实现
    基于java+springboot+layui的流浪动物交流信息平台设计实现......
  • kafka(启动集群,使用spring方法,自定义配置)
    ApacheKafka是一个开源的分布式流处理平台,最初由LinkedIn开发,后来成为Apache项目。Kafka主要用于高吞吐量、低延迟的实时数据流处理,常用于日志收集、实时分析、消息传递等场景。以下是关于Kafka的详细讲解:一、理论知识1.Kafka的基本概念Kafka是一个分布式的......
  • Spring Boot框架:电商系统的创新设计
    摘要现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本网上商城系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,......
  • 网上商城系统:Spring Boot框架的实现
    摘要现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本网上商城系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,......