加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用spring boot中的JPA操作数据库

发布时间:2020-12-15 01:10:44 所属栏目:大数据 来源:网络整理
导读:前言 Spring boot中的JPA 使用的同学都会感觉到他的强大,简直就是神器一般,通俗的说,根本不需要你写sql,这就帮你节省了很多时间,那么下面我们来一起来体验下这款神器吧。 一、在pom中添加依赖 dependency groupId org.springframework.boot / artifactI

前言

Spring boot中的JPA 使用的同学都会感觉到他的强大,简直就是神器一般,通俗的说,根本不需要你写sql,这就帮你节省了很多时间,那么下面我们来一起来体验下这款神器吧。

一、在pom中添加依赖

       <dependency>
            groupId>org.springframework.boot</artifactId>spring-boot-starter-data-jpa>
        >mysql>mysql-connector-javaversion>6.0.6>

二、项目配置

在application.yml中填写数据库及JPA相关配置信息(这样在dev和prod两个环境是可以共用的),示例如下:

# 多环境配置
spring:
  profiles:
    active: prod

# 通用数据源配置
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/student_info?serverTimezone=GMT%2B8
    username: root
    password: root
    hikari:
      maximum-pool-size: 20
      minimum-idle: 5
  # JPA相关配置
  jpa:
    hibernate:
      ddl-auto: create
    show-sql: true

说明:接口调试时,jpa中的ddl-auto:要改为update,否则每次运行都会清空数据哦!

编写好项目配置后,这里我们可以启动项目,会报错如下:

?

?

?这是因为我没创建这个库引起的,那么我们先把这个库创建起来,接着我们重新启动项目就不会报错了,还帮我们显示出了创建sql语句,是不是很赞呢,哈哈

?

?

三、 数据库的操作

前面的项目基本搭建完成,下面我们通过增删改查的一系列操作,来完成数据库的操作。

1、创建一个实体

创建一个名为Student的类,示例如下:

package com.rongrong.springboot.demo.student;


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

/**
 * @author rongrong
 * @version 1.0
 * @description:
 * @date 2019/12/30 21:24
 */
@Entity
public class Student {

    主键ID
    @Id
    自增型
    @GeneratedValue
    private Integer id;
     String name;
     Integer age;
     String sex;
     String email;
}

2、数据库操作逻辑编写

?

?

?创建一个名为StudentResponstory的接口,继承JPAResponstory,示例如下:

 com.rongrong.springboot.demo.student;

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

 1.0
 * @description:
 * @date 2019/12/30 22:20
 */
interface StudentResponstory extends JpaRepository<Student,Integer> {
}

创建一个名为StudentController的类,通过增删改查操作,来实现库的操作逻辑,具体示例代码如下:

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

 java.util.List;

 1.0
 * @description:
 * @date 2019/12/30 20:40
 
@RestController
 StudentController {

    @Autowired
    StudentResponstory studentResponstory;

    
     * 查询所有学生列表
     *
     * @return
     
    @GetMapping("/students")
    public List<Student> sudentFindAll() {
        return studentResponstory.findAll();
    }

    
     * 新增一个学生
     *
     * @param name
     *  age
     *  sex
     *  email
     * 
    @PostMapping("/studentAdd"public Student sudentAdd(@RequestParam("name") String name,@RequestParam("age") Integer age,@RequestParam("sex") String sex,@RequestParam("email") String email) {
        Student student = new Student();
        student.setName(name);
        student.setAge(age);
        student.setSex(sex);
        student.setEmail(email);
        保存和更新都用该方法
         studentResponstory.save(student);
    }

    
     * 通过iD查找一个学生
     *
     *  id
     * 
    @GetMapping("/sudentFindOne/{id}"public Student sudentFindOne(@PathVariable("id") Integer id) {
         studentResponstory.findOne(id);
    }

    
     * 通过ID更新一个学生信息
     *
     * 
    @PutMapping("/sudentUpdate/{id}"public Student sudentUpdate(@PathVariable("id") Integer id,@RequestParam("name") String name,1)"> Student();
        student.setId(id);
        student.setName(name);
        student.setAge(age);
        student.setSex(sex);
        student.setEmail(email);
        
     * 通过ID删除一个学生
     *
     *  id
     
    @DeleteMapping("/sudentDelete/{id}"void sudentDelete(@PathVariable("id") Integer id) {
        studentResponstory.delete(id);
    }

    
     * 通过年龄查询学生
     *
     * 
    @GetMapping("/sudentFindByAge/{age}"public List<Student> sudentFindByAge(@PathVariable("age") Integer age) {
         studentResponstory.findByAge(age);
    }

}

通过年龄查询学生查询时,需要在接口中添加如下方法:

 {
    List<Student> findByAge(Integer age);
}

再次启动项目,通过postman进行逐一测试,即可。

项目启动效果图

?

?

postman效果图

到此,spring boot中jpa的使用介绍完,有兴趣的同学可以自行尝试。

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读